Change:
Discussed in zulip: https://rust- The problem is that compiler doesn't accept code like this: But it accepts code when merging mutiple annotations into one: : Version 1.48.0-nightly ( 2020-09-22) cc which modified some const stability checks. modify labels: E-mentor
Error: Label P-low can only be set by Rust team members Please let know if you're having trouble with this bot.
just refactored a few individual calls to into a single helper function. only looks for the first attribute it seems. Shouldn't be hard to fix.
assign
Error: Parsing assign command in failed: ...'n bugadani' ''... Please let know if you're having trouble with this bot.
The PR did not actually fix the issue. The test case to the PR also works without the PR. A test case that would fail would actually check whether a second attribute would be honored. Adding a second attribute was silently ignored, and it still is after the PR. Edit: nevermind, all is good:
It doesn't hurt to double check, just takes some time :)

Discussion:
pub fn allow_internal_unstable<'a>( sess: &'a Session, <del> attrs: &[Attribute], </del> <ins> attrs: &'a [Attribute], </ins> ) -> Option<impl Iterator<Item = Symbol> + 'a> { <del> let attr = sess.find_by_name(attrs, sym::allow_internal_unstable)?; let list = attr.meta_item_list().or_else(|| { sess.diagnostic() .span_err(attr.span, "allow_internal_unstable expects list of feature names"); None })?; </del> <ins> let attrs = sess.filter_by_name(attrs, sym::allow_internal_unstable); let list = attrs .filter_map(move |attr| { attr.meta_item_list().or_else(|| { sess.diagnostic().span_err( attr.span, "`allow_internal_unstable` expects a list of feature names", ); None }) }) .flatten(); </ins> Some(list.into_iter().filter_map(move |it| { let name = it.ident().map(|ident| ident.name); if name.is_none() {

($e: expr) => { $e.x } } <ins> // regression test for #77088 #[stable(feature = "stable", since = "1.0.0")] #[allow_internal_unstable(struct_field)] #[allow_internal_unstable(struct2_field)] #[macro_export] macro_rules! access_field_allow2 { ($e: expr) => { $e.x } } </ins> #[stable(feature = "stable", since = "1.0.0")] #[allow_internal_unstable()] #[macro_export]

construct_unstable_allow!(0); |x: internal_unstable::Foo| { call_method_allow!(x) }; |x: internal_unstable::Bar| { access_field_allow!(x) }; <ins> |x: internal_unstable::Bar| { access_field_allow2!(x) }; // regression test for #77088 </ins> // bad. pass_through_allow!(internal_unstable::unstable()); //~ ERROR use of unstable

error[E0658]: use of unstable library feature 'function' <del> --> $DIR/internal-unstable.rs:33:25 </del> <ins> --> $DIR/internal-unstable.rs:34:25 </ins> | LL |     pass_through_allow!(internal_unstable::unstable()); |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^

= help: add `#![feature(function)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'function' <del> --> $DIR/internal-unstable.rs:35:27 </del> <ins> --> $DIR/internal-unstable.rs:36:27 </ins> | LL |     pass_through_noallow!(internal_unstable::unstable()); |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^

= help: add `#![feature(function)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'function' <del> --> $DIR/internal-unstable.rs:39:22 </del> <ins> --> $DIR/internal-unstable.rs:40:22 </ins> | LL |     println!("{:?}", internal_unstable::unstable()); |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^

= help: add `#![feature(function)]` to the crate attributes to enable error[E0658]: use of unstable library feature 'function' <del> --> $DIR/internal-unstable.rs:41:10 </del> <ins> --> $DIR/internal-unstable.rs:42:10 </ins> | LL |     bar!(internal_unstable::unstable()); |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^