diff options
author | bors <bors@rust-lang.org> | 2022-06-28 18:36:42 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-06-28 18:36:42 +0000 |
commit | 830880640304ba8699c5f9a0c4665c38a3271963 (patch) | |
tree | a984e46bf7b5e06a3b688797ffb1af6f30dd7bc9 | |
parent | 94e93749ab00539a11e90426ea87382c433530a8 (diff) | |
parent | 164c98e447aa1b6aadcaaebf4c218fa28ff07830 (diff) | |
download | rust-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-- | .gitignore | 2 | ||||
-rw-r--r-- | compiler/rustc_lexer/src/unescape.rs | 2 | ||||
-rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | 2 | ||||
-rw-r--r-- | compiler/rustc_span/src/source_map.rs | 2 | ||||
-rw-r--r-- | library/std/src/lib.rs | 1 | ||||
-rw-r--r-- | library/std/src/sys/windows/args.rs | 19 | ||||
-rw-r--r-- | src/librustdoc/clean/types.rs | 6 | ||||
-rw-r--r-- | src/librustdoc/json/conversions.rs | 7 | ||||
-rw-r--r-- | src/test/rustdoc-json/assoc_type.rs | 22 | ||||
-rw-r--r-- | src/test/rustdoc-json/glob_import.rs | 24 | ||||
-rw-r--r-- | src/test/ui/consts/const-eval/issue-85907.rs | 7 | ||||
-rw-r--r-- | src/test/ui/consts/const-eval/issue-85907.stderr | 10 | ||||
-rw-r--r-- | src/test/ui/extern/auxiliary/issue-80074-macro.rs | 4 | ||||
-rw-r--r-- | src/test/ui/extern/issue-80074.rs | 10 | ||||
-rw-r--r-- | src/test/ui/generics/issue-98432.rs | 9 | ||||
-rw-r--r-- | src/test/ui/generics/issue-98432.stderr | 14 | ||||
-rw-r--r-- | src/tools/compiletest/src/main.rs | 5 | ||||
m--------- | src/tools/rust-analyzer | 14 | ||||
-rw-r--r-- | triagebot.toml | 2 |
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" |