1
Fork 0

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:
bors 2022-10-07 07:31:53 +00:00
commit 5854680388
18 changed files with 53 additions and 30 deletions

View file

@ -977,9 +977,10 @@ fn link_natively<'a>(
but `link.exe` was not found", but `link.exe` was not found",
); );
sess.note_without_error( sess.note_without_error(
"please ensure that VS 2013, VS 2015, VS 2017, VS 2019 or VS 2022 \ "please ensure that Visual Studio 2017 or later, or Build Tools \
was installed with the Visual C++ option", 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(); sess.abort_if_errors();
} }

View file

@ -259,7 +259,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
err.help("consider adding an `else` block that evaluates to the expected type"); err.help("consider adding an `else` block that evaluates to the expected type");
error = true; error = true;
}, },
ret_reason.is_none(), false,
); );
error error
} }

View file

@ -242,10 +242,14 @@ For targets: `i586-unknown-linux-gnu`
- Operating System > Target OS = linux - Operating System > Target OS = linux
- Operating System > Linux kernel version = 3.2.101 - Operating System > Linux kernel version = 3.2.101
- Binary utilities > Version of binutils = 2.32 - 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-library > glibc version = 2.17.0
- C compiler > gcc version = 8.3.0 - C compiler > gcc version = 8.3.0
- C compiler > C++ = ENABLE - 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` ### `powerpc-linux-gnu.config`
For targets: `powerpc-unknown-linux-gnu` For targets: `powerpc-unknown-linux-gnu`

View file

@ -336,7 +336,7 @@ CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd" CT_BINUTILS_LINKER_DEFAULT="bfd"
# CT_BINUTILS_PLUGINS is not set # CT_BINUTILS_PLUGINS is not set
CT_BINUTILS_RELRO=m 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_BINUTILS_FOR_TARGET is not set
CT_ALL_BINUTILS_CHOICES="BINUTILS" CT_ALL_BINUTILS_CHOICES="BINUTILS"

View file

@ -890,7 +890,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
w, w,
"implementors", "implementors",
"Implementors", "Implementors",
"<div class=\"item-list\" id=\"implementors-list\">", "<div id=\"implementors-list\">",
); );
for implementor in concrete { for implementor in concrete {
render_implementor(cx, implementor, it, w, &implementor_dups, &[]); 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, w,
"synthetic-implementors", "synthetic-implementors",
"Auto implementors", "Auto implementors",
"<div class=\"item-list\" id=\"synthetic-implementors-list\">", "<div id=\"synthetic-implementors-list\">",
); );
for implementor in synthetic { for implementor in synthetic {
render_implementor( render_implementor(
@ -923,7 +923,7 @@ fn item_trait(w: &mut Buffer, cx: &mut Context<'_>, it: &clean::Item, t: &clean:
w, w,
"implementors", "implementors",
"Implementors", "Implementors",
"<div class=\"item-list\" id=\"implementors-list\"></div>", "<div id=\"implementors-list\"></div>",
); );
if t.is_auto(cx.tcx()) { 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, w,
"synthetic-implementors", "synthetic-implementors",
"Auto implementors", "Auto implementors",
"<div class=\"item-list\" id=\"synthetic-implementors-list\"></div>", "<div id=\"synthetic-implementors-list\"></div>",
); );
} }
} }

View file

@ -690,11 +690,6 @@ pre, .rustdoc.source .example-wrap {
border: 1px solid var(--border-color); 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 */ /* Shift "where ..." part of method or fn definition down a line */
.content .method .where, .content .method .where,
.content .fn .where, .content .fn .where,
@ -773,8 +768,9 @@ h2.small-section-header > .anchor {
} }
.all-items a:hover, .all-items a:hover,
.docblock a:not(.srclink):not(.test-arrow):not(.scrape-help):hover, .docblock a:not(.test-arrow):not(.scrape-help):hover,
.docblock-short a:not(.srclink):not(.test-arrow):not(.scrape-help):hover, .item-info a { .docblock-short a:not(.test-arrow):not(.scrape-help):hover,
.item-info a {
text-decoration: underline; text-decoration: underline;
} }

View file

@ -4,13 +4,13 @@ pub trait Foo {}
pub struct Bar<T> { field: T } 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>"
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>"
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>"
impl<'a> Foo for &'a Bar<u8> {} impl<'a> Foo for &'a Bar<u8> {}
@ -22,9 +22,9 @@ pub mod mod2 {
pub enum Baz {} 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 foo::mod1::Baz"
impl Foo for 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 foo::mod2::Baz"
impl<'a> Foo for &'a mod2::Baz {} impl<'a> Foo for &'a mod2::Baz {}

View file

@ -7,6 +7,6 @@ pub struct Foo<T> { field: T }
// @has impl_parts/struct.Foo.html '//*[@class="impl has-srclink"]//h3[@class="code-header"]' \ // @has impl_parts/struct.Foo.html '//*[@class="impl has-srclink"]//h3[@class="code-header"]' \
// "impl<T: Clone> !AnAutoTrait for Foo<T>where T: Sync," // "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,"
impl<T: Clone> !AnAutoTrait for Foo<T> where T: Sync {} impl<T: Clone> !AnAutoTrait for Foo<T> where T: Sync {}

View file

@ -4,7 +4,7 @@ error[E0317]: `if` may be missing an `else` clause
LL | / if true { LL | / if true {
LL | | return 0; LL | | return 0;
LL | | } LL | | }
| |_____^ expected `()`, found `i32` | |_____^ expected `i32`, found `()`
| |
= note: `if` expressions without `else` evaluate to `()` = note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type = help: consider adding an `else` block that evaluates to the expected type

View file

@ -2,7 +2,7 @@ error[E0317]: `if` may be missing an `else` clause
--> $DIR/issue-50577.rs:3:16 --> $DIR/issue-50577.rs:3:16
| |
LL | Drop = assert_eq!(1, 1), LL | Drop = assert_eq!(1, 1),
| ^^^^^^^^^^^^^^^^ expected `()`, found `isize` | ^^^^^^^^^^^^^^^^ expected `isize`, found `()`
| |
= note: `if` expressions without `else` evaluate to `()` = note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type = help: consider adding an `else` block that evaluates to the expected type

View file

@ -1,6 +1,6 @@
fn main() { fn main() {
let a = if true { true }; let a = if true { true };
//~^ ERROR `if` may be missing an `else` clause [E0317] //~^ ERROR `if` may be missing an `else` clause [E0317]
//~| expected `()`, found `bool` //~| expected `bool`, found `()`
println!("{}", a); println!("{}", a);
} }

View file

@ -5,7 +5,7 @@ LL | let a = if true { true };
| ^^^^^^^^^^----^^ | ^^^^^^^^^^----^^
| | | | | |
| | found here | | found here
| expected `()`, found `bool` | expected `bool`, found `()`
| |
= note: `if` expressions without `else` evaluate to `()` = note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type = help: consider adding an `else` block that evaluates to the expected type

View file

@ -3,7 +3,7 @@ fn main() {
0 0
} else if false { } else if false {
//~^ ERROR `if` may be missing an `else` clause //~^ ERROR `if` may be missing an `else` clause
//~| expected `()`, found integer //~| expected integer, found `()`
1 1
}; };
} }

View file

@ -8,7 +8,7 @@ LL | |
LL | | 1 LL | | 1
| | - found here | | - found here
LL | | }; LL | | };
| |_____^ expected `()`, found integer | |_____^ expected integer, found `()`
| |
= note: `if` expressions without `else` evaluate to `()` = note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type = help: consider adding an `else` block that evaluates to the expected type

View file

@ -3,7 +3,7 @@
fn main() { fn main() {
if let Some(homura) = Some("madoka") { //~ ERROR missing an `else` clause if let Some(homura) = Some("madoka") { //~ ERROR missing an `else` clause
//~| expected `()`, found integer //~| expected integer, found `()`
765 765
}; };
} }

View file

@ -6,7 +6,7 @@ LL | |
LL | | 765 LL | | 765
| | --- found here | | --- found here
LL | | }; LL | | };
| |_____^ expected `()`, found integer | |_____^ expected integer, found `()`
| |
= note: `if` expressions without `else` evaluate to `()` = note: `if` expressions without `else` evaluate to `()`
= help: consider adding an `else` block that evaluates to the expected type = help: consider adding an `else` block that evaluates to the expected type

View file

@ -8,4 +8,15 @@ fn main() {
} }
}; };
let Some(x) = Some(1) else { Some(2) }; //~ ERROR does not diverge 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!()
} }

View file

@ -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: try adding a diverging expression, such as `return` or `panic!(..)`
= help: ...or use `match` instead of `let...else` = 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`. For more information about this error, try `rustc --explain E0308`.