提交 83088064 编写于 作者: B bors

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
......@@ -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 @@ pub fn count_lines(&self) -> usize {
}
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 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 @@ pub(crate) fn def_id(&self) -> DefId {
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 @@ fn from_tcx(import: clean::Import, tcx: TyCtxt<'_>) -> Self {
},
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,
},
......
// 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;
// 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 *;
}
const fn hey() -> usize {
panic!(123); //~ ERROR argument to `panic!()` in a const context must have type `&str`
}
fn main() {
let _: [u8; hey()] = todo!();
}
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
// edition:2018
macro_rules! foo_ { () => {}; }
use foo_ as foo;
// edition:2018
// build-pass
// aux-crate:issue_80074=issue-80074-macro.rs
#[macro_use]
extern crate issue_80074;
fn main() {
foo!();
}
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() {}
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.
......
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"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册