Auto merge of #123171 - matthiaskrgr:rollup-7id2r8o, r=matthiaskrgr

Rollup of 6 pull requests

Successful merges:

 - #123063 (Function ABI is irrelevant for reachability)
 - #123096 (Don't check match scrutinee of postfix match for unused parens)
 - #123146 (Use compiletest directives instead of manually checking TARGET / tools)
 - #123160 (remove `def_id_to_node_id` in ast lowering)
 - #123162 (Correctly get complete intra-doc link data)
 - #123164 (Bump Unicode printables to version 15.1, align to unicode_data)

r? `@ghost`
`@rustbot` modify labels: rollup
This commit is contained in:
bors 2024-03-28 18:27:54 +00:00
commit ba527200cc
22 changed files with 76 additions and 88 deletions

View File

@ -865,7 +865,9 @@ trait UnusedDelimLint {
(iter, UnusedDelimsCtx::ForIterExpr, true, None, Some(body.span.lo()), true)
}
Match(ref head, ..) if Self::LINT_EXPR_IN_PATTERN_MATCHING_CTX => {
Match(ref head, _, ast::MatchKind::Prefix)
if Self::LINT_EXPR_IN_PATTERN_MATCHING_CTX =>
{
let left = e.span.lo() + rustc_span::BytePos(5);
(head, UnusedDelimsCtx::MatchScrutineeExpr, true, Some(left), None, true)
}

View File

@ -215,7 +215,6 @@ pub struct ResolverAstLowering {
pub next_node_id: ast::NodeId,
pub node_id_to_def_id: NodeMap<LocalDefId>,
pub def_id_to_node_id: IndexVec<LocalDefId, ast::NodeId>,
pub trait_map: NodeMap<Vec<hir::TraitCandidate>>,
/// List functions and methods for which lifetime elision was successful.

View File

@ -24,7 +24,6 @@ use rustc_middle::query::Providers;
use rustc_middle::ty::{self, ExistentialTraitRef, TyCtxt};
use rustc_privacy::DefIdVisitor;
use rustc_session::config::CrateType;
use rustc_target::spec::abi::Abi;
/// Determines whether this item is recursive for reachability. See `is_recursively_reachable_local`
/// below for details.
@ -164,16 +163,6 @@ impl<'tcx> ReachableContext<'tcx> {
if !self.any_library {
// If we are building an executable, only explicitly extern
// types need to be exported.
let reachable =
if let Node::Item(hir::Item { kind: hir::ItemKind::Fn(sig, ..), .. })
| Node::ImplItem(hir::ImplItem {
kind: hir::ImplItemKind::Fn(sig, ..), ..
}) = *node
{
sig.header.abi != Abi::Rust
} else {
false
};
let codegen_attrs = if self.tcx.def_kind(search_item).has_codegen_attrs() {
self.tcx.codegen_fn_attrs(search_item)
} else {
@ -182,7 +171,7 @@ impl<'tcx> ReachableContext<'tcx> {
let is_extern = codegen_attrs.contains_extern_indicator();
let std_internal =
codegen_attrs.flags.contains(CodegenFnAttrFlags::RUSTC_STD_INTERNAL_SYMBOL);
if reachable || is_extern || std_internal {
if is_extern || std_internal {
self.reachable_symbols.insert(search_item);
}
} else {

View File

@ -1618,7 +1618,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
.into_items()
.map(|(k, f)| (k, f.key()))
.collect(),
def_id_to_node_id: self.def_id_to_node_id,
trait_map: self.trait_map,
lifetime_elision_allowed: self.lifetime_elision_allowed,
lint_buffer: Steal::new(self.lint_buffer),

View File

@ -63,7 +63,10 @@ pub(crate) fn is_printable(x: char) -> bool {
if 0x2cea2 <= x && x < 0x2ceb0 {
return false;
}
if 0x2ebe1 <= x && x < 0x2f800 {
if 0x2ebe1 <= x && x < 0x2ebf0 {
return false;
}
if 0x2ee5e <= x && x < 0x2f800 {
return false;
}
if 0x2fa1e <= x && x < 0x30000 {
@ -112,7 +115,7 @@ const SINGLETONS0U: &[(u8, u8)] = &[
(0x2b, 3),
(0x2d, 11),
(0x2e, 1),
(0x30, 3),
(0x30, 4),
(0x31, 2),
(0x32, 1),
(0xa7, 2),
@ -157,12 +160,12 @@ const SINGLETONS0L: &[u8] = &[
0x7e, 0x7f, 0xb5, 0xc5, 0xd4, 0xd5, 0xdc, 0xf0,
0xf1, 0xf5, 0x72, 0x73, 0x8f, 0x74, 0x75, 0x96,
0x26, 0x2e, 0x2f, 0xa7, 0xaf, 0xb7, 0xbf, 0xc7,
0xcf, 0xd7, 0xdf, 0x9a, 0x40, 0x97, 0x98, 0x30,
0x8f, 0x1f, 0xd2, 0xd4, 0xce, 0xff, 0x4e, 0x4f,
0x5a, 0x5b, 0x07, 0x08, 0x0f, 0x10, 0x27, 0x2f,
0xee, 0xef, 0x6e, 0x6f, 0x37, 0x3d, 0x3f, 0x42,
0x45, 0x90, 0x91, 0x53, 0x67, 0x75, 0xc8, 0xc9,
0xd0, 0xd1, 0xd8, 0xd9, 0xe7, 0xfe, 0xff,
0xcf, 0xd7, 0xdf, 0x9a, 0x00, 0x40, 0x97, 0x98,
0x30, 0x8f, 0x1f, 0xd2, 0xd4, 0xce, 0xff, 0x4e,
0x4f, 0x5a, 0x5b, 0x07, 0x08, 0x0f, 0x10, 0x27,
0x2f, 0xee, 0xef, 0x6e, 0x6f, 0x37, 0x3d, 0x3f,
0x42, 0x45, 0x90, 0x91, 0x53, 0x67, 0x75, 0xc8,
0xc9, 0xd0, 0xd1, 0xd8, 0xd9, 0xe7, 0xfe, 0xff,
];
#[rustfmt::skip]
const SINGLETONS1U: &[(u8, u8)] = &[
@ -339,10 +342,9 @@ const NORMAL0: &[u8] = &[
0x80, 0xbe, 0x22,
0x74, 0x0c,
0x80, 0xd6, 0x1a,
0x0c, 0x05,
0x80, 0xff, 0x05,
0x80, 0xdf, 0x0c,
0xf2, 0x9d, 0x03,
0x81, 0x10, 0x05,
0x80, 0xdf, 0x0b,
0xf2, 0x9e, 0x03,
0x37, 0x09,
0x81, 0x5c, 0x14,
0x80, 0xb8, 0x08,

View File

@ -90,7 +90,7 @@ fn check_redundant_explicit_link<'md>(
) -> Option<()> {
let mut broken_line_callback = |link: BrokenLink<'md>| Some((link.reference, "".into()));
let mut offset_iter = Parser::new_with_broken_link_callback(
&doc,
doc,
main_body_opts(),
Some(&mut broken_line_callback),
)
@ -264,6 +264,7 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
let mut resolvable_link = None;
let mut resolvable_link_range = None;
let mut display_link = String::new();
let mut is_resolvable = true;
while let Some((event, range)) = offset_iter.next() {
match event {
@ -281,6 +282,11 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
resolvable_link = Some(code);
resolvable_link_range = Some(range);
}
Event::Start(_) => {
// If there is anything besides backticks, it's not considered as an intra-doc link
// so we ignore it.
is_resolvable = false;
}
Event::End(_) => {
break;
}
@ -288,6 +294,11 @@ fn collect_link_data(offset_iter: &mut OffsetIter<'_, '_>) -> LinkData {
}
}
if !is_resolvable {
resolvable_link_range = None;
resolvable_link = None;
}
LinkData { resolvable_link, resolvable_link_range, display_link }
}

View File

@ -691,9 +691,9 @@ pub fn line_directive<'line>(
}
}
/// This is generated by collecting directives from ui tests and then extracting their directive
/// names. This is **not** an exhaustive list of all possible directives. Instead, this is a
/// best-effort approximation for diagnostics.
/// This was originally generated by collecting directives from ui tests and then extracting their
/// directive names. This is **not** an exhaustive list of all possible directives. Instead, this is
/// a best-effort approximation for diagnostics. Add new headers to this list when needed.
const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
// tidy-alphabetical-start
"assembly-output",
@ -837,6 +837,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"needs-sanitizer-thread",
"needs-threads",
"needs-unwind",
"needs-wasmtime",
"needs-xray",
"no-prefer-dynamic",
"normalize-stderr-32bit",
@ -872,6 +873,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"only-unix",
"only-wasm32",
"only-wasm32-bare",
"only-wasm32-wasip1",
"only-windows",
"only-x86",
"only-x86_64",

View File

@ -149,6 +149,11 @@ pub(super) fn handle_needs(
condition: config.target_cfg().relocation_model == "pic",
ignore_reason: "ignored on targets without PIC relocation model",
},
Need {
name: "needs-wasmtime",
condition: config.runner.as_ref().is_some_and(|r| r.contains("wasmtime")),
ignore_reason: "ignored when wasmtime runner is not available",
},
];
let (name, comment) = match ln.split_once([':', ' ']) {

View File

@ -8,6 +8,10 @@
//! settings. Turning off optimizations and enabling debug assertions tends to produce the most
//! dependence on core that is possible, so that is the configuration we test here.
// wasm and nvptx targets don't produce rlib files that object can parse.
//@ ignore-wasm
//@ ignore-nvptx64
#![deny(warnings)]
extern crate run_make_support;
@ -33,10 +37,6 @@ path = "lib.rs""#;
fn main() {
let target_dir = tmp_dir().join("target");
let target = std::env::var("TARGET").unwrap();
if target.starts_with("wasm") || target.starts_with("nvptx") {
// wasm and nvptx targets don't produce rlib files that object can parse.
return;
}
println!("Testing compiler_builtins for {}", target);

View File

@ -1,3 +1,6 @@
//@ only-wasm32-wasip1
//@ needs-wasmtime
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir};
@ -5,23 +8,10 @@ use std::path::Path;
use std::process::Command;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").run();
let file = tmp_dir().join("foo.wasm");
let has_wasmtime = match Command::new("wasmtime").arg("--version").output() {
Ok(s) => s.status.success(),
_ => false,
};
if !has_wasmtime {
println!("skipping test, wasmtime isn't available");
return;
}
run(&file, "return_two_i32", "1\n2\n");
run(&file, "return_two_i64", "3\n4\n");
run(&file, "return_two_f32", "5\n6\n");

View File

@ -1,13 +1,10 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir, wasmparser};
use std::collections::HashMap;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").run();
rustc().input("bar.rs").target("wasm32-wasip1").arg("-Clto").opt().run();

View File

@ -1,3 +1,4 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{tmp_dir, wasmparser, rustc};
@ -5,10 +6,6 @@ use std::collections::HashMap;
use std::path::Path;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").opt().run();
verify(&tmp_dir().join("foo.wasm"));

View File

@ -1,3 +1,5 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{tmp_dir, wasmparser, rustc};
@ -6,10 +8,6 @@ use std::path::Path;
use wasmparser::ExternalKind::*;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
test(&[]);
test(&["-O"]);
test(&["-Clto"]);

View File

@ -1,3 +1,5 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{tmp_dir, wasmparser, rustc};
@ -5,10 +7,6 @@ use std::collections::HashMap;
use wasmparser::TypeRef::Func;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").run();
rustc()
.input("bar.rs")

View File

@ -1,3 +1,4 @@
//@ only-wasm32-wasip1
#![deny(warnings)]
extern crate run_make_support;
@ -5,10 +6,6 @@ extern crate run_make_support;
use run_make_support::{rustc, tmp_dir};
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
test("a");
test("b");
test("c");

View File

@ -1,13 +1,11 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir, wasmparser};
use std::collections::HashMap;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc()
.input("main.rs")
.target("wasm32-wasip1")

View File

@ -1,3 +1,4 @@
//@ only-wasm32-wasip1
#![deny(warnings)]
extern crate run_make_support;
@ -5,10 +6,6 @@ extern crate run_make_support;
use run_make_support::{rustc, tmp_dir};
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").arg("-Clto").opt().run();
let bytes = std::fs::read(&tmp_dir().join("foo.wasm")).unwrap();

View File

@ -1,13 +1,10 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir, wasmparser};
use std::collections::{HashMap, HashSet};
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
test_file("foo.rs", &[("a", &["foo"]), ("b", &["foo"])]);
test_file("bar.rs", &[("m1", &["f", "g"]), ("m2", &["f"])]);
test_file("baz.rs", &[("sqlite", &["allocate", "deallocate"])]);

View File

@ -1,13 +1,10 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir, wasmparser};
use std::path::Path;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").run();
verify_symbols(&tmp_dir().join("foo.wasm"));
rustc().input("foo.rs").target("wasm32-wasip1").opt().run();

View File

@ -1,13 +1,10 @@
//@ only-wasm32-wasip1
extern crate run_make_support;
use run_make_support::{rustc, tmp_dir, wasmparser};
use std::path::Path;
fn main() {
if std::env::var("TARGET").unwrap() != "wasm32-wasip1" {
return;
}
rustc().input("foo.rs").target("wasm32-wasip1").run();
verify_symbols(&tmp_dir().join("foo.wasm"));
rustc().input("foo.rs").target("wasm32-wasip1").arg("-Clto").run();

View File

@ -0,0 +1,8 @@
//@ check-pass
// Regression test for <https://github.com/rust-lang/rust/issues/123158>. It
// should not emit any warning.
//! [**`SomeTrait`**](SomeTrait):
pub trait SomeTrait {}

View File

@ -0,0 +1,8 @@
//@ check-pass
#![feature(postfix_match)]
fn main() {
(&1).match { a => a };
(1 + 2).match { b => b };
}