Auto merge of #102767 - matthiaskrgr:rollup-vcbt81v, r=matthiaskrgr
Rollup of 6 pull requests Successful merges: - #102577 (Warn about Visual Studio Code branding confusion) - #102720 (do not reverse the expected type and found type for ObligationCauseCo…) - #102744 (rustdoc: remove unused CSS `.content .item-list`) - #102747 (rustdoc: remove unused CSS `.docblock a:not(.srclink)`) - #102748 (Disable compressed debug sections on i586-gnu) - #102761 (let-else: test else block with non-never uninhabited type) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
5854680388
18 changed files with 53 additions and 30 deletions
|
@ -977,9 +977,10 @@ fn link_natively<'a>(
|
|||
but `link.exe` was not found",
|
||||
);
|
||||
sess.note_without_error(
|
||||
"please ensure that VS 2013, VS 2015, VS 2017, VS 2019 or VS 2022 \
|
||||
was installed with the Visual C++ option",
|
||||
"please ensure that Visual Studio 2017 or later, or Build Tools \
|
||||
for Visual Studio were installed with the Visual C++ option.",
|
||||
);
|
||||
sess.note_without_error("VS Code is a different product, and is not sufficient.");
|
||||
}
|
||||
sess.abort_if_errors();
|
||||
}
|
||||
|
|
|
@ -259,7 +259,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||
err.help("consider adding an `else` block that evaluates to the expected type");
|
||||
error = true;
|
||||
},
|
||||
ret_reason.is_none(),
|
||||
false,
|
||||
);
|
||||
error
|
||||
}
|
||||
|
|
|
@ -242,10 +242,14 @@ For targets: `i586-unknown-linux-gnu`
|
|||
- Operating System > Target OS = linux
|
||||
- Operating System > Linux kernel version = 3.2.101
|
||||
- Binary utilities > Version of binutils = 2.32
|
||||
- Binary utilities > binutils extra config = --enable-compressed-debug-sections=none -- (\*)
|
||||
- C-library > glibc version = 2.17.0
|
||||
- C compiler > gcc version = 8.3.0
|
||||
- C compiler > C++ = ENABLE
|
||||
|
||||
(\*) Compressed debug is enabled by default for gas (assembly) on Linux/x86 targets,
|
||||
but that makes our `compiler_builtins` incompatible with binutils < 2.32.
|
||||
|
||||
### `powerpc-linux-gnu.config`
|
||||
|
||||
For targets: `powerpc-unknown-linux-gnu`
|
||||
|
|
|
@ -336,7 +336,7 @@ CT_BINUTILS_LINKERS_LIST="ld"
|
|||
CT_BINUTILS_LINKER_DEFAULT="bfd"
|
||||
# CT_BINUTILS_PLUGINS is not set
|
||||
CT_BINUTILS_RELRO=m
|
||||
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
|
||||
CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-compressed-debug-sections=none"
|
||||
# CT_BINUTILS_FOR_TARGET is not set
|
||||
CT_ALL_BINUTILS_CHOICES="BINUTILS"
|
||||
|
||||
|
|
|
@ -890,7 +890,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
|
|||
w,
|
||||
"implementors",
|
||||
"Implementors",
|
||||
"<div class=\"item-list\" id=\"implementors-list\">",
|
||||
"<div id=\"implementors-list\">",
|
||||
);
|
||||
for implementor in concrete {
|
||||
render_implementor(cx, implementor, it, w, &implementor_dups, &[]);
|
||||
|
@ -902,7 +902,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
|
|||
w,
|
||||
"synthetic-implementors",
|
||||
"Auto implementors",
|
||||
"<div class=\"item-list\" id=\"synthetic-implementors-list\">",
|
||||
"<div id=\"synthetic-implementors-list\">",
|
||||
);
|
||||
for implementor in synthetic {
|
||||
render_implementor(
|
||||
|
@ -923,7 +923,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
|
|||
w,
|
||||
"implementors",
|
||||
"Implementors",
|
||||
"<div class=\"item-list\" id=\"implementors-list\"></div>",
|
||||
"<div id=\"implementors-list\"></div>",
|
||||
);
|
||||
|
||||
if t.is_auto(cx.tcx()) {
|
||||
|
@ -931,7 +931,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
|
|||
w,
|
||||
"synthetic-implementors",
|
||||
"Auto implementors",
|
||||
"<div class=\"item-list\" id=\"synthetic-implementors-list\"></div>",
|
||||
"<div id=\"synthetic-implementors-list\"></div>",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -690,11 +690,6 @@ pre, .rustdoc.source .example-wrap {
|
|||
border: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.content .item-list {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Shift "where ..." part of method or fn definition down a line */
|
||||
.content .method .where,
|
||||
.content .fn .where,
|
||||
|
@ -773,8 +768,9 @@ h2.small-section-header > .anchor {
|
|||
}
|
||||
|
||||
.all-items a:hover,
|
||||
.docblock a:not(.srclink):not(.test-arrow):not(.scrape-help):hover,
|
||||
.docblock-short a:not(.srclink):not(.test-arrow):not(.scrape-help):hover, .item-info a {
|
||||
.docblock a:not(.test-arrow):not(.scrape-help):hover,
|
||||
.docblock-short a:not(.test-arrow):not(.scrape-help):hover,
|
||||
.item-info a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@ pub trait Foo {}
|
|||
|
||||
pub struct Bar<T> { field: T }
|
||||
|
||||
// @has foo/trait.Foo.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has foo/trait.Foo.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl Foo for Bar<u8>"
|
||||
impl Foo for Bar<u8> {}
|
||||
// @has foo/trait.Foo.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has foo/trait.Foo.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl Foo for Bar<u16>"
|
||||
impl Foo for Bar<u16> {}
|
||||
// @has foo/trait.Foo.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has foo/trait.Foo.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl<'a> Foo for &'a Bar<u8>"
|
||||
impl<'a> Foo for &'a Bar<u8> {}
|
||||
|
||||
|
@ -22,9 +22,9 @@ pub mod mod2 {
|
|||
pub enum Baz {}
|
||||
}
|
||||
|
||||
// @has foo/trait.Foo.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has foo/trait.Foo.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl Foo for foo::mod1::Baz"
|
||||
impl Foo for mod1::Baz {}
|
||||
// @has foo/trait.Foo.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has foo/trait.Foo.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl<'a> Foo for &'a foo::mod2::Baz"
|
||||
impl<'a> Foo for &'a mod2::Baz {}
|
||||
|
|
|
@ -7,6 +7,6 @@ pub struct Foo<T> { field: T }
|
|||
|
||||
// @has impl_parts/struct.Foo.html '//*[@class="impl has-srclink"]//h3[@class="code-header"]' \
|
||||
// "impl<T: Clone> !AnAutoTrait for Foo<T>where T: Sync,"
|
||||
// @has impl_parts/trait.AnAutoTrait.html '//*[@class="item-list"]//h3[@class="code-header"]' \
|
||||
// @has impl_parts/trait.AnAutoTrait.html '//*[@id="implementors-list"]//h3[@class="code-header"]' \
|
||||
// "impl<T: Clone> !AnAutoTrait for Foo<T>where T: Sync,"
|
||||
impl<T: Clone> !AnAutoTrait for Foo<T> where T: Sync {}
|
||||
|
|
|
@ -4,7 +4,7 @@ error[E0317]: `if` may be missing an `else` clause
|
|||
LL | / if true {
|
||||
LL | | return 0;
|
||||
LL | | }
|
||||
| |_____^ expected `()`, found `i32`
|
||||
| |_____^ expected `i32`, found `()`
|
||||
|
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
|
|
@ -2,7 +2,7 @@ error[E0317]: `if` may be missing an `else` clause
|
|||
--> $DIR/issue-50577.rs:3:16
|
||||
|
|
||||
LL | Drop = assert_eq!(1, 1),
|
||||
| ^^^^^^^^^^^^^^^^ expected `()`, found `isize`
|
||||
| ^^^^^^^^^^^^^^^^ expected `isize`, found `()`
|
||||
|
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
fn main() {
|
||||
let a = if true { true };
|
||||
//~^ ERROR `if` may be missing an `else` clause [E0317]
|
||||
//~| expected `()`, found `bool`
|
||||
//~| expected `bool`, found `()`
|
||||
println!("{}", a);
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ LL | let a = if true { true };
|
|||
| ^^^^^^^^^^----^^
|
||||
| | |
|
||||
| | found here
|
||||
| expected `()`, found `bool`
|
||||
| expected `bool`, found `()`
|
||||
|
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
|
|
@ -3,7 +3,7 @@ fn main() {
|
|||
0
|
||||
} else if false {
|
||||
//~^ ERROR `if` may be missing an `else` clause
|
||||
//~| expected `()`, found integer
|
||||
//~| expected integer, found `()`
|
||||
1
|
||||
};
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ LL | |
|
|||
LL | | 1
|
||||
| | - found here
|
||||
LL | | };
|
||||
| |_____^ expected `()`, found integer
|
||||
| |_____^ expected integer, found `()`
|
||||
|
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
fn main() {
|
||||
if let Some(homura) = Some("madoka") { //~ ERROR missing an `else` clause
|
||||
//~| expected `()`, found integer
|
||||
//~| expected integer, found `()`
|
||||
765
|
||||
};
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ LL | |
|
|||
LL | | 765
|
||||
| | --- found here
|
||||
LL | | };
|
||||
| |_____^ expected `()`, found integer
|
||||
| |_____^ expected integer, found `()`
|
||||
|
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
|
|
@ -8,4 +8,15 @@ fn main() {
|
|||
}
|
||||
};
|
||||
let Some(x) = Some(1) else { Some(2) }; //~ ERROR does not diverge
|
||||
|
||||
// Ensure that uninhabited types do not "diverge".
|
||||
// This might be relaxed in the future, but when it is,
|
||||
// it should be an explicitly wanted descision.
|
||||
let Some(x) = Some(1) else { foo::<Uninhabited>() }; //~ ERROR does not diverge
|
||||
}
|
||||
|
||||
enum Uninhabited {}
|
||||
|
||||
fn foo<T>() -> T {
|
||||
panic!()
|
||||
}
|
||||
|
|
|
@ -39,6 +39,17 @@ LL | let Some(x) = Some(1) else { Some(2) };
|
|||
= help: try adding a diverging expression, such as `return` or `panic!(..)`
|
||||
= help: ...or use `match` instead of `let...else`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error[E0308]: `else` clause of `let...else` does not diverge
|
||||
--> $DIR/let-else-non-diverging.rs:15:32
|
||||
|
|
||||
LL | let Some(x) = Some(1) else { foo::<Uninhabited>() };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ expected `!`, found enum `Uninhabited`
|
||||
|
|
||||
= note: expected type `!`
|
||||
found enum `Uninhabited`
|
||||
= help: try adding a diverging expression, such as `return` or `panic!(..)`
|
||||
= help: ...or use `match` instead of `let...else`
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue