mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-27 07:03:45 +00:00
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 (⬆️ 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
This commit is contained in:
commit
8308806403
2
.gitignore
vendored
2
.gitignore
vendored
@ -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/
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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={:?}",
|
||||
|
@ -335,7 +335,6 @@
|
||||
#![feature(const_ip)]
|
||||
#![feature(const_ipv4)]
|
||||
#![feature(const_ipv6)]
|
||||
#![feature(const_option)]
|
||||
#![feature(const_socketaddr)]
|
||||
#![feature(thread_local_internals)]
|
||||
//
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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,
|
||||
},
|
||||
|
22
src/test/rustdoc-json/assoc_type.rs
Normal file
22
src/test/rustdoc-json/assoc_type.rs
Normal file
@ -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;
|
24
src/test/rustdoc-json/glob_import.rs
Normal file
24
src/test/rustdoc-json/glob_import.rs
Normal file
@ -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 *;
|
||||
}
|
7
src/test/ui/consts/const-eval/issue-85907.rs
Normal file
7
src/test/ui/consts/const-eval/issue-85907.rs
Normal file
@ -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!();
|
||||
}
|
10
src/test/ui/consts/const-eval/issue-85907.stderr
Normal file
10
src/test/ui/consts/const-eval/issue-85907.stderr
Normal file
@ -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
|
||||
|
4
src/test/ui/extern/auxiliary/issue-80074-macro.rs
vendored
Normal file
4
src/test/ui/extern/auxiliary/issue-80074-macro.rs
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
// edition:2018
|
||||
|
||||
macro_rules! foo_ { () => {}; }
|
||||
use foo_ as foo;
|
10
src/test/ui/extern/issue-80074.rs
vendored
Normal file
10
src/test/ui/extern/issue-80074.rs
vendored
Normal file
@ -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!();
|
||||
}
|
9
src/test/ui/generics/issue-98432.rs
Normal file
9
src/test/ui/generics/issue-98432.rs
Normal file
@ -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() {}
|
14
src/test/ui/generics/issue-98432.stderr
Normal file
14
src/test/ui/generics/issue-98432.stderr
Normal file
@ -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`.
|
@ -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.
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 427061da19723f2206fe4dcb175c9c43b9a6193d
|
||||
Subproject commit b74e96f509baf0be70281c55f14cb18fefbc6b22
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user