Rollup merge of #117420 - Jules-Bertholet:internal-unstable-stmt-expr-attributes, r=petrochenkov
Make `#![allow_internal_unstable(..)]` work with `stmt_expr_attributes` This is a necessary first step to fixing #117304, as explained in https://github.com/rust-lang/rust/issues/117304#issuecomment-1784414453. `@rustbot` label T-compiler
This commit is contained in:
commit
4808aa8872
3 changed files with 17 additions and 5 deletions
|
@ -373,7 +373,9 @@ impl<'a> StripUnconfigured<'a> {
|
||||||
/// If attributes are not allowed on expressions, emit an error for `attr`
|
/// If attributes are not allowed on expressions, emit an error for `attr`
|
||||||
#[instrument(level = "trace", skip(self))]
|
#[instrument(level = "trace", skip(self))]
|
||||||
pub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute) {
|
pub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute) {
|
||||||
if self.features.is_some_and(|features| !features.stmt_expr_attributes) {
|
if self.features.is_some_and(|features| !features.stmt_expr_attributes)
|
||||||
|
&& !attr.span.allows_unstable(sym::stmt_expr_attributes)
|
||||||
|
{
|
||||||
let mut err = feature_err(
|
let mut err = feature_err(
|
||||||
&self.sess,
|
&self.sess,
|
||||||
sym::stmt_expr_attributes,
|
sym::stmt_expr_attributes,
|
||||||
|
|
|
@ -28,6 +28,14 @@ macro_rules! bar {
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow_internal_unstable(stmt_expr_attributes)]
|
||||||
|
macro_rules! internal_attr {
|
||||||
|
($e: expr) => {
|
||||||
|
#[allow(overflowing_literals)]
|
||||||
|
$e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// ok, the instability is contained.
|
// ok, the instability is contained.
|
||||||
call_unstable_allow!();
|
call_unstable_allow!();
|
||||||
|
@ -51,4 +59,6 @@ fn main() {
|
||||||
#[allow_internal_unstable]
|
#[allow_internal_unstable]
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_eq!(internal_attr!(1e100_f32), f32::INFINITY);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error[E0658]: use of unstable library feature 'function'
|
error[E0658]: use of unstable library feature 'function'
|
||||||
--> $DIR/internal-unstable.rs:40:25
|
--> $DIR/internal-unstable.rs:48:25
|
||||||
|
|
|
|
||||||
LL | pass_through_allow!(internal_unstable::unstable());
|
LL | pass_through_allow!(internal_unstable::unstable());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -8,7 +8,7 @@ LL | pass_through_allow!(internal_unstable::unstable());
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0658]: use of unstable library feature 'function'
|
error[E0658]: use of unstable library feature 'function'
|
||||||
--> $DIR/internal-unstable.rs:42:27
|
--> $DIR/internal-unstable.rs:50:27
|
||||||
|
|
|
|
||||||
LL | pass_through_noallow!(internal_unstable::unstable());
|
LL | pass_through_noallow!(internal_unstable::unstable());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -17,7 +17,7 @@ LL | pass_through_noallow!(internal_unstable::unstable());
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0658]: use of unstable library feature 'function'
|
error[E0658]: use of unstable library feature 'function'
|
||||||
--> $DIR/internal-unstable.rs:46:22
|
--> $DIR/internal-unstable.rs:54:22
|
||||||
|
|
|
|
||||||
LL | println!("{:?}", internal_unstable::unstable());
|
LL | println!("{:?}", internal_unstable::unstable());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -26,7 +26,7 @@ LL | println!("{:?}", internal_unstable::unstable());
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0658]: use of unstable library feature 'function'
|
error[E0658]: use of unstable library feature 'function'
|
||||||
--> $DIR/internal-unstable.rs:48:10
|
--> $DIR/internal-unstable.rs:56:10
|
||||||
|
|
|
|
||||||
LL | bar!(internal_unstable::unstable());
|
LL | bar!(internal_unstable::unstable());
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue