summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-06-28 18:36:42 +0000
committerbors <bors@rust-lang.org>2022-06-28 18:36:42 +0000
commit830880640304ba8699c5f9a0c4665c38a3271963 (patch)
treea984e46bf7b5e06a3b688797ffb1af6f30dd7bc9
parent94e93749ab00539a11e90426ea87382c433530a8 (diff)
parent164c98e447aa1b6aadcaaebf4c218fa28ff07830 (diff)
downloadrust-830880640304ba8699c5f9a0c4665c38a3271963.tar.gz
Auto merge of #98632 - matthiaskrgr:rollup-peg868d, r=matthiaskrgr
Rollup of 11 pull requests Successful merges: - #98548 (rustdoc-json: Allow Typedef to be different in sanity assert) - #98560 (Add regression test for #85907) - #98564 (Remove references to `./tmp` in-tree) - #98602 (Add regression test for #80074) - #98606 (:arrow_up: rust-analyzer) - #98609 (Fix ICE for associated constant generics) - #98611 (Fix glob import ICE in rustdoc JSON format) - #98617 (Remove feature `const_option` from std) - #98619 (Fix mir-opt wg name) - #98621 (llvm-wrapper: adapt for removal of the ASanGlobalsMetadataAnalysis LLVM API) - #98623 (fix typo in comment) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
-rw-r--r--.gitignore2
-rw-r--r--compiler/rustc_lexer/src/unescape.rs2
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp2
-rw-r--r--compiler/rustc_span/src/source_map.rs2
-rw-r--r--library/std/src/lib.rs1
-rw-r--r--library/std/src/sys/windows/args.rs19
-rw-r--r--src/librustdoc/clean/types.rs6
-rw-r--r--src/librustdoc/json/conversions.rs7
-rw-r--r--src/test/rustdoc-json/assoc_type.rs22
-rw-r--r--src/test/rustdoc-json/glob_import.rs24
-rw-r--r--src/test/ui/consts/const-eval/issue-85907.rs7
-rw-r--r--src/test/ui/consts/const-eval/issue-85907.stderr10
-rw-r--r--src/test/ui/extern/auxiliary/issue-80074-macro.rs4
-rw-r--r--src/test/ui/extern/issue-80074.rs10
-rw-r--r--src/test/ui/generics/issue-98432.rs9
-rw-r--r--src/test/ui/generics/issue-98432.stderr14
-rw-r--r--src/tools/compiletest/src/main.rs5
m---------src/tools/rust-analyzer14
-rw-r--r--triagebot.toml2
19 files changed, 138 insertions, 24 deletions
diff --git a/.gitignore b/.gitignore
index ec6cb6ed2e4..a6625ac2ac4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,8 +46,6 @@ no_llvm_build
/unicode-downloads
/target
/src/tools/x/target
-# Generated by compiletest for incremental
-/tmp/
# Created by default with `src/ci/docker/run.sh`
/obj/
diff --git a/compiler/rustc_lexer/src/unescape.rs b/compiler/rustc_lexer/src/unescape.rs
index 97f9588ae1e..3da6bc14622 100644
--- a/compiler/rustc_lexer/src/unescape.rs
+++ b/compiler/rustc_lexer/src/unescape.rs
@@ -238,7 +238,7 @@ fn scan_escape(chars: &mut Chars<'_>, mode: Mode) -> Result<char, EscapeError> {
c.to_digit(16).ok_or(EscapeError::InvalidCharInUnicodeEscape)?;
n_digits += 1;
if n_digits > 6 {
- // Stop updating value since we're sure that it's is incorrect already.
+ // Stop updating value since we're sure that it's incorrect already.
continue;
}
let digit = digit as u32;
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
index 38fddbdba54..0f4973ebf71 100644
--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
@@ -985,7 +985,9 @@ LLVMRustOptimizeWithNewPassManager(
if (SanitizerOptions->SanitizeAddress) {
OptimizerLastEPCallbacks.push_back(
[SanitizerOptions](ModulePassManager &MPM, OptimizationLevel Level) {
+#if LLVM_VERSION_LT(15, 0)
MPM.addPass(RequireAnalysisPass<ASanGlobalsMetadataAnalysis, Module>());
+#endif
#if LLVM_VERSION_GE(14, 0)
AddressSanitizerOptions opts = AddressSanitizerOptions{
/*CompileKernel=*/false,
diff --git a/compiler/rustc_span/src/source_map.rs b/compiler/rustc_span/src/source_map.rs
index 95ea7029617..227127aed50 100644
--- a/compiler/rustc_span/src/source_map.rs
+++ b/compiler/rustc_span/src/source_map.rs
@@ -956,7 +956,7 @@ impl SourceMap {
}
pub fn generate_fn_name_span(&self, span: Span) -> Option<Span> {
- let prev_span = self.span_extend_to_prev_str(span, "fn", true, true).unwrap_or(span);
+ let prev_span = self.span_extend_to_prev_str(span, "fn", true, true)?;
if let Ok(snippet) = self.span_to_snippet(prev_span) {
debug!(
"generate_fn_name_span: span={:?}, prev_span={:?}, snippet={:?}",
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 7da9f248c87..65b8df42996 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -335,7 +335,6 @@
#![feature(const_ip)]
#![feature(const_ipv4)]
#![feature(const_ipv6)]
-#![feature(const_option)]
#![feature(const_socketaddr)]
#![feature(thread_local_internals)]
//
diff --git a/library/std/src/sys/windows/args.rs b/library/std/src/sys/windows/args.rs
index c5918103fec..01f26298290 100644
--- a/library/std/src/sys/windows/args.rs
+++ b/library/std/src/sys/windows/args.rs
@@ -21,6 +21,17 @@ use crate::vec;
use core::iter;
+/// This is the const equivalent to `NonZeroU16::new(n).unwrap()`
+///
+/// FIXME: This can be removed once `Option::unwrap` is stably const.
+/// See the `const_option` feature (#67441).
+const fn non_zero_u16(n: u16) -> NonZeroU16 {
+ match NonZeroU16::new(n) {
+ Some(n) => n,
+ None => panic!("called `unwrap` on a `None` value"),
+ }
+}
+
pub fn args() -> Args {
// SAFETY: `GetCommandLineW` returns a pointer to a null terminated UTF-16
// string so it's safe for `WStrUnits` to use.
@@ -58,10 +69,10 @@ fn parse_lp_cmd_line<'a, F: Fn() -> OsString>(
lp_cmd_line: Option<WStrUnits<'a>>,
exe_name: F,
) -> Vec<OsString> {
- const BACKSLASH: NonZeroU16 = NonZeroU16::new(b'\\' as u16).unwrap();
- const QUOTE: NonZeroU16 = NonZeroU16::new(b'"' as u16).unwrap();
- const TAB: NonZeroU16 = NonZeroU16::new(b'\t' as u16).unwrap();
- const SPACE: NonZeroU16 = NonZeroU16::new(b' ' as u16).unwrap();
+ const BACKSLASH: NonZeroU16 = non_zero_u16(b'\\' as u16);
+ const QUOTE: NonZeroU16 = non_zero_u16(b'"' as u16);
+ const TAB: NonZeroU16 = non_zero_u16(b'\t' as u16);
+ const SPACE: NonZeroU16 = non_zero_u16(b' ' as u16);
let mut ret_val = Vec::new();
// If the cmd line pointer is null or it points to an empty string then
diff --git a/src/librustdoc/clean/types.rs b/src/librustdoc/clean/types.rs
index 2762d5e8502..352803855a4 100644
--- a/src/librustdoc/clean/types.rs
+++ b/src/librustdoc/clean/types.rs
@@ -2161,8 +2161,12 @@ impl Path {
self.res.def_id()
}
+ pub(crate) fn last_opt(&self) -> Option<Symbol> {
+ self.segments.last().map(|s| s.name)
+ }
+
pub(crate) fn last(&self) -> Symbol {
- self.segments.last().expect("segments were empty").name
+ self.last_opt().expect("segments were empty")
}
pub(crate) fn whole_name(&self) -> String {
diff --git a/src/librustdoc/json/conversions.rs b/src/librustdoc/json/conversions.rs
index 428519dbc16..54dc1b4fdee 100644
--- a/src/librustdoc/json/conversions.rs
+++ b/src/librustdoc/json/conversions.rs
@@ -666,7 +666,12 @@ impl FromWithTcx<clean::Import> for Import {
},
Glob => Import {
source: import.source.path.whole_name(),
- name: import.source.path.last().to_string(),
+ name: import
+ .source
+ .path
+ .last_opt()
+ .unwrap_or_else(|| Symbol::intern("*"))
+ .to_string(),
id: import.source.did.map(ItemId::from).map(|i| from_item_id(i, tcx)),
glob: true,
},
diff --git a/src/test/rustdoc-json/assoc_type.rs b/src/test/rustdoc-json/assoc_type.rs
new file mode 100644
index 00000000000..716bb3d2848
--- /dev/null
+++ b/src/test/rustdoc-json/assoc_type.rs
@@ -0,0 +1,22 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/98547>.
+
+// @has assoc_type.json
+// @has - "$.index[*][?(@.name=='Trait')]"
+// @has - "$.index[*][?(@.name=='AssocType')]"
+// @has - "$.index[*][?(@.name=='S')]"
+// @has - "$.index[*][?(@.name=='S2')]"
+
+pub trait Trait {
+ type AssocType;
+}
+
+impl<T> Trait for T {
+ type AssocType = Self;
+}
+
+pub struct S;
+
+/// Not needed for the #98547 ICE to occur, but added to maximize the chance of
+/// getting an ICE in the future. See
+/// <https://github.com/rust-lang/rust/pull/98548#discussion_r908219164>
+pub struct S2;
diff --git a/src/test/rustdoc-json/glob_import.rs b/src/test/rustdoc-json/glob_import.rs
new file mode 100644
index 00000000000..d7ac952d1bb
--- /dev/null
+++ b/src/test/rustdoc-json/glob_import.rs
@@ -0,0 +1,24 @@
+// This is a regression test for <https://github.com/rust-lang/rust/issues/98003>.
+
+#![feature(no_core)]
+#![no_std]
+#![no_core]
+
+// @has glob_import.json
+// @has - "$.index[*][?(@.name=='glob')]"
+// @has - "$.index[*][?(@.kind=='import')].inner.name" \"*\"
+
+
+mod m1 {
+ pub fn f() {}
+}
+mod m2 {
+ pub fn f(_: u8) {}
+}
+
+pub use m1::*;
+pub use m2::*;
+
+pub mod glob {
+ pub use *;
+}
diff --git a/src/test/ui/consts/const-eval/issue-85907.rs b/src/test/ui/consts/const-eval/issue-85907.rs
new file mode 100644
index 00000000000..6ae40ae6ddb
--- /dev/null
+++ b/src/test/ui/consts/const-eval/issue-85907.rs
@@ -0,0 +1,7 @@
+const fn hey() -> usize {
+ panic!(123); //~ ERROR argument to `panic!()` in a const context must have type `&str`
+}
+
+fn main() {
+ let _: [u8; hey()] = todo!();
+}
diff --git a/src/test/ui/consts/const-eval/issue-85907.stderr b/src/test/ui/consts/const-eval/issue-85907.stderr
new file mode 100644
index 00000000000..381f2fd1114
--- /dev/null
+++ b/src/test/ui/consts/const-eval/issue-85907.stderr
@@ -0,0 +1,10 @@
+error: argument to `panic!()` in a const context must have type `&str`
+ --> $DIR/issue-85907.rs:2:5
+ |
+LL | panic!(123);
+ | ^^^^^^^^^^^
+ |
+ = note: this error originates in the macro `$crate::panic::panic_2015` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/extern/auxiliary/issue-80074-macro.rs b/src/test/ui/extern/auxiliary/issue-80074-macro.rs
new file mode 100644
index 00000000000..30e0f19ab8d
--- /dev/null
+++ b/src/test/ui/extern/auxiliary/issue-80074-macro.rs
@@ -0,0 +1,4 @@
+// edition:2018
+
+macro_rules! foo_ { () => {}; }
+use foo_ as foo;
diff --git a/src/test/ui/extern/issue-80074.rs b/src/test/ui/extern/issue-80074.rs
new file mode 100644
index 00000000000..f83027d4abf
--- /dev/null
+++ b/src/test/ui/extern/issue-80074.rs
@@ -0,0 +1,10 @@
+// edition:2018
+// build-pass
+// aux-crate:issue_80074=issue-80074-macro.rs
+
+#[macro_use]
+extern crate issue_80074;
+
+fn main() {
+ foo!();
+}
diff --git a/src/test/ui/generics/issue-98432.rs b/src/test/ui/generics/issue-98432.rs
new file mode 100644
index 00000000000..780c50d6ffa
--- /dev/null
+++ b/src/test/ui/generics/issue-98432.rs
@@ -0,0 +1,9 @@
+struct Struct<T>(T);
+
+impl<T> Struct<T> {
+ const CONST: fn() = || {
+ struct _Obligation where T:; //~ ERROR can't use generic parameters from outer function
+ };
+}
+
+fn main() {}
diff --git a/src/test/ui/generics/issue-98432.stderr b/src/test/ui/generics/issue-98432.stderr
new file mode 100644
index 00000000000..afa67b63bd9
--- /dev/null
+++ b/src/test/ui/generics/issue-98432.stderr
@@ -0,0 +1,14 @@
+error[E0401]: can't use generic parameters from outer function
+ --> $DIR/issue-98432.rs:5:34
+ |
+LL | impl<T> Struct<T> {
+ | - type parameter from outer function
+LL | const CONST: fn() = || {
+LL | struct _Obligation where T:;
+ | ^ use of generic parameter from outer function
+ |
+ = help: try using a local generic parameter instead
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0401`.
diff --git a/src/tools/compiletest/src/main.rs b/src/tools/compiletest/src/main.rs
index e23cccf6cd1..4e8e5afd4bb 100644
--- a/src/tools/compiletest/src/main.rs
+++ b/src/tools/compiletest/src/main.rs
@@ -351,11 +351,6 @@ pub fn opt_str2(maybestr: Option<String>) -> String {
}
pub fn run_tests(config: Config) {
- // FIXME(#33435) Avoid spurious failures in codegen-units/partitioning tests.
- if let Mode::CodegenUnits = config.mode {
- let _ = fs::remove_dir_all("tmp/partitioning-tests");
- }
-
// If we want to collect rustfix coverage information,
// we first make sure that the coverage file does not exist.
// It will be created later on.
diff --git a/src/tools/rust-analyzer b/src/tools/rust-analyzer
-Subproject 427061da19723f2206fe4dcb175c9c43b9a6193
+Subproject b74e96f509baf0be70281c55f14cb18fefbc6b2
diff --git a/triagebot.toml b/triagebot.toml
index 8aefb1f620b..100dfd613f0 100644
--- a/triagebot.toml
+++ b/triagebot.toml
@@ -244,7 +244,7 @@ cc = ["@rust-lang/miri"]
[mentions."compiler/rustc_mir_transform/src/"]
message = "Some changes occurred to MIR optimizations"
-cc = ["@rust-lang/mir-opt"]
+cc = ["@rust-lang/wg-mir-opt"]
[mentions."compiler/rustc_trait_selection/src/traits/const_evaluatable.rs"]
message = "Some changes occurred in const_evaluatable.rs"