Rollup merge of #152550 - Ozzy1423:rustc-attrs, r=JonathanBrouwer

Port #[prelude_import] to the attribute parser

Tracking issue: https://github.com/rust-lang/rust/issues/131229

r? @JonathanBrouwer

Didn't change any use-sites of it in the compiler
This commit is contained in:
Stuart Cook 2026-02-13 15:19:15 +11:00 committed by GitHub
commit 9e0a05b481
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
33 changed files with 44 additions and 30 deletions

View file

@ -1211,3 +1211,12 @@ impl<S: Stage> SingleAttributeParser<S> for RustcReservationImplParser {
Some(AttributeKind::RustcReservationImpl(cx.attr_span, value_str))
}
}
pub(crate) struct PreludeImportParser;
impl<S: Stage> NoArgsAttributeParser<S> for PreludeImportParser {
const PATH: &[Symbol] = &[sym::prelude_import];
const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
const ALLOWED_TARGETS: AllowedTargets = AllowedTargets::AllowList(&[Allow(Target::Use)]);
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::PreludeImport;
}

View file

@ -258,6 +258,7 @@ attribute_parsers!(
Single<WithoutArgs<PassByValueParser>>,
Single<WithoutArgs<PinV2Parser>>,
Single<WithoutArgs<PointeeParser>>,
Single<WithoutArgs<PreludeImportParser>>,
Single<WithoutArgs<ProcMacroAttributeParser>>,
Single<WithoutArgs<ProcMacroParser>>,
Single<WithoutArgs<ProfilerRuntimeParser>>,

View file

@ -1053,6 +1053,9 @@ pub enum AttributeKind {
/// Represents `#[pointee]`
Pointee(Span),
/// Represents `#[prelude_import]`
PreludeImport,
/// Represents `#[proc_macro]`
ProcMacro(Span),

View file

@ -82,6 +82,7 @@ impl AttributeKind {
PatternComplexityLimit { .. } => No,
PinV2(..) => Yes,
Pointee(..) => No,
PreludeImport => No,
ProcMacro(..) => No,
ProcMacroAttribute(..) => No,
ProcMacroDerive { .. } => No,

View file

@ -282,6 +282,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
| AttributeKind::PatternComplexityLimit { .. }
| AttributeKind::PinV2(..)
| AttributeKind::Pointee(..)
| AttributeKind::PreludeImport
| AttributeKind::ProfilerRuntime
| AttributeKind::RecursionLimit { .. }
| AttributeKind::ReexportTestHarnessMain(..)
@ -394,7 +395,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
// need to be fixed
| sym::deprecated_safe // FIXME(deprecated_safe)
// internal
| sym::prelude_import
| sym::panic_handler
| sym::lang
| sym::default_lib_allocator

View file

@ -7,7 +7,7 @@
#![allow(incomplete_features)]
#![feature(fn_delegation)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use std::prelude::rust_2021::*;
extern crate to_reuse_functions;

View file

@ -5,7 +5,7 @@
#![allow(incomplete_features)]
#![feature(fn_delegation)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
mod to_reuse {

View file

@ -5,7 +5,7 @@
#![allow(incomplete_features)]
#![feature(fn_delegation)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
fn b<C>(e: C) { }

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir

View file

@ -4,7 +4,7 @@
#![feature(c_variadic)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
extern "C" {

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir

View file

@ -6,7 +6,7 @@
#![allow(unused)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
struct Foo<'a> {

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ pretty-compare-only
//@ pretty-mode:hir,typed

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
// Test to print lifetimes on HIR pretty-printing.

View file

@ -5,7 +5,7 @@
#![feature(pin_ergonomics)]
#![allow(dead_code, incomplete_features)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
use std::pin::Pin;

View file

@ -3,7 +3,7 @@
#![feature(const_block_items)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
const _: () =

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ edition: 2015

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
// https://github.com/rust-lang/rust/issues/82329
//@ compile-flags: -Zunpretty=hir,typed

View file

@ -4,7 +4,7 @@
#![feature(type_alias_impl_trait)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
trait Animal { }

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-fail

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-pass

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-pass

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-pass

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use std::prelude::rust_2024::*;
//@ revisions: expanded hir
//@[expanded]compile-flags: -Zunpretty=expanded

View file

@ -31,7 +31,7 @@
#![feature(yeet_expr)]
#![allow(incomplete_features)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use std::prelude::rust_2024::*;
mod prelude {
@ -46,7 +46,7 @@ mod prelude {
}
}
#[prelude_import]
#[attr = PreludeImport]
use self::prelude::*;
/// inner single-line doc comment

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir -Zflatten-format-args=yes
//@ check-pass

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-pass

View file

@ -1,5 +1,5 @@
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
//@ compile-flags: -Zunpretty=hir
//@ check-pass

View file

@ -5,7 +5,7 @@
#![expect(incomplete_features)]
#![allow(dead_code)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
use std::marker::ConstParamTy;

View file

@ -9,7 +9,7 @@
//@ edition: 2015
#![allow(dead_code)]
extern crate std;
#[prelude_import]
#[attr = PreludeImport]
use ::std::prelude::rust_2015::*;
fn main() ({ } as ())