1
Fork 0

Workaround unstable stmt_expr_attributes for method receiver expressions.

This commit is contained in:
Camille GILLOT 2022-10-23 09:22:19 +00:00
parent 6c9c2d862d
commit 74d4eefc13
9 changed files with 121 additions and 19 deletions

View file

@ -469,6 +469,7 @@ impl<'a> StripUnconfigured<'a> {
}
/// If attributes are not allowed on expressions, emit an error for `attr`
#[instrument(level = "trace", skip(self))]
pub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute) {
if !self.features.map_or(true, |features| features.stmt_expr_attributes) {
let mut err = feature_err(
@ -486,9 +487,12 @@ impl<'a> StripUnconfigured<'a> {
}
}
pub fn configure_expr(&self, expr: &mut P<ast::Expr>) {
for attr in expr.attrs.iter() {
self.maybe_emit_expr_attr_err(attr);
#[instrument(level = "trace", skip(self))]
pub fn configure_expr(&self, expr: &mut P<ast::Expr>, method_receiver: bool) {
if !method_receiver {
for attr in expr.attrs.iter() {
self.maybe_emit_expr_attr_err(attr);
}
}
// If an expr is valid to cfg away it will have been removed by the