Skip to content

Reject cfg on expressions that cannot be safely removed - #159580

Merged
rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
Unique-Usman:ua/cfg
Oct 28, 2026
Merged

rust-bors[bot] merged 2 commits into
rust-lang:mainfrom
Unique-Usman:ua/cfg

Conversation

@Unique-Usman

@Unique-Usman Unique-Usman commented Jul 19, 2026 •

Copy link
Copy Markdown
Contributor

View all comments

Change description

This PR changes how #[cfg] behaves in expression positions where removing the expression would result in invalid syntax.

For example:

let _ = 1 + #[cfg(unix)] 2;

This currently works on Unix because the condition is true, but becomes invalid on non-Unix targets when the expression is removed.

The proposed change rejects cfg in these positions regardless of whether the condition is true or false. The goal is to avoid code whose validity depends on the target and to make the behavior more predictable as stmt_expr_attributes is stabilized.

Summary of the discussion

@petrochenkov pointed out that this differs from the usual token-based model for macros: #[cfg(true)] expr produces expr, while #[cfg(false)] expr produces no tokens. From that perspective, only the latter naturally results in an error.

On the other hand, @estebank pointed out that these cases are easy to introduce accidentally and may only be discovered when the code is compiled for another target. This becomes more important with the stabilization of expression attributes.

We also discussed that this is technically a breaking change, since some currently accepted code such as #[cfg(true)] inside a macro invocation would stop compiling (#159580 (comment)). The conclusion was that this is effectively closing a stability hole, and the amount of affected code is expected to be very small.

The current implementation also uses RemoveNodeNotSupported for these cases and adds coverage for both #[cfg(true)] and #[cfg(false)].

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jul 19, 2026
@rustbot

rustbot commented Jul 19, 2026

Copy link
Copy Markdown
Collaborator

r? @petrochenkov

rustbot has assigned @petrochenkov.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 74 candidates
  • Random selection from 16 candidates

@Unique-Usman
Unique-Usman marked this pull request as draft July 19, 2026 21:30
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 19, 2026
@Unique-Usman
Unique-Usman marked this pull request as ready for review July 19, 2026 22:49
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jul 19, 2026
@Unique-Usman

Copy link
Copy Markdown
Contributor Author

@estebank

Comment thread compiler/rustc_expand/src/expand.rs Resolved
@petrochenkov

Copy link
Copy Markdown
Contributor

I don't think we should do this.

cfg should ideally behave like a macro, unless necessary for backward compatibility, that also means following the token-based model.

#[my_attr] expr is valid if it expands into tokens that can be parsed as an expression.

  • #[cfg(false)] expr expands into /*empty*/, which cannot be parsed as an expression, so it's an error.
  • #[cfg(true)] expr expands into expr, which can be parsed as an expression, so it's not an error.

@petrochenkov petrochenkov added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 20, 2026
@estebank

estebank commented Jul 20, 2026 •

Copy link
Copy Markdown
Contributor

@petrochenkov should the toolchain provide guidance for things that are likely to cause trouble because they are always a footgun regardless?

Code like let _ = 1 + #[cfg(unix)] 2; will never make sense, but could easily slip into a codebase without anyone noticing until a downstream tries to build on Windows, and then it becomes a compile error. I 100% agree that the general behavior of cfg attributes should not diverge from macros in general. But I am convinced we should strive to make the toolchain as proactive as possible in avoiding user mistakes. A custom #[my_cfg(..)] wouldn't have the benefit of this proactive, of course, making it slightly worse to use than the built-in. I think having this check is important for the effort to stabilize attributes in expressions, which I think has enough consensus on a subset that can be safely stabilized. If that happens, the prevalence of these kind of attributes might be higher than it is now.

Edit: even if we don't emit an error, shouldn't this case in particular be at least deny-by-default lint, given that it is syntactically correct, but unlikely to be what the user intended?

@mejrs

mejrs commented Jul 20, 2026

Copy link
Copy Markdown
Member

cfg should ideally behave like a macro

#159581 won't stabilize attribute macros on expressions, so should we move #[cfg(pred)] expr to be feature gated by proc_macro_hygiene, like attribute macros currently are?

Also if we ever get a way for macros to overload based on what position (type, expr, etc) they're in (perhaps similar to macro_attr and macro_derive), then that would make the proposed behavior feel more natural.

@petrochenkov

Copy link
Copy Markdown
Contributor

should the toolchain provide guidance for things that are likely to cause trouble because they are always a footgun regardless?

Yes, this just looks like a lint material to me.
The compiler knows additional details about some specific macro and can say that using it in some contexts is not a good idea, even if it technically works.

Are you sure cfg in these positions is always unstable?
In that case we can report a hard error just as a conservative measure to avoid stabilizing a questionable case, or keep it feature-gated as @mejrs says.

@mejrs

mejrs commented Jul 21, 2026

Copy link
Copy Markdown
Member

Code like let _ = 1 + #[cfg(unix)] 2; will never make sense, but could easily slip into a codebase without anyone noticing until a downstream tries to build on Windows, and then it becomes a compile error.

For an example, see https://github.com/PyO3/pyo3/blob/09b8d484b3f79b8519cac63be9d71a107cb14952/pyo3-ffi/examples/string-sum/src/lib.rs#L36 where the value of an array length depends on conditional compilation.

It would be quite tempting to try to write that as...

const SLOTS_LEN: usize = 1 + #[cfg(Py_3_12)] 1 + #[cfg(Py_GIL_DISABLED)] 1 + #[cfg(Py_3_15)] 4);

...and end up in one of those situations where it looks like something that does what you expect, only for it to turn out you're wrong. It would just be another gotcha that most people are going to run into at some point.

Comment thread compiler/rustc_expand/src/expand.rs Resolved
@petrochenkov

Copy link
Copy Markdown
Contributor

Are you sure cfg in these positions is always unstable?

This is technically a breaking change, because it closes a stability hole.
This code works now, but will stop working after this change.

macro_rules! mac {
    ($expr:expr) => { $expr.clone() }
}

fn main() {
    let _ = mac!(#[cfg(true)] 10);
}

@petrochenkov

Copy link
Copy Markdown
Contributor

Let's land this, it will simplify the stabilization of stmt_expr_attributes.
The breakage is very unlikely in practice and we'll know whether it happens from beta crater runs, crater is too busy now for a separate run.
@rustbot author

@rustbot

rustbot commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Reminder, once the PR becomes ready for a review, use @rustbot ready.

@petrochenkov

Copy link
Copy Markdown
Contributor

Could you also add this as a test case?

#[derive(Clone)]
enum E {
    V1 = #[cfg(true)] 1,
    V2 = #[cfg_attr(true, cfg(true))] 2,
}

Both variants should produce errors.
This executes configure_expr, which is an eager cfg expansion logic performed by derives.

@rustbot

rustbot commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 6, 2026
Comment thread compiler/rustc_expand/src/expand.rs Resolved
Report the same error for true and false cfg predicates when the
surrounding expression cannot be removed. Apply it consistently during
normal expansion and cfg_eval.

Signed-off-by: Usman Akinyemi <usmanakinyemi202@gmail.com>
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 26, 2026
@petrochenkov

Copy link
Copy Markdown
Contributor

Thanks!
@bors r+

@rust-bors

rust-bors Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

📋 This PR cannot be approved because it currently has the following label: S-waiting-on-t-lang.

@petrochenkov petrochenkov removed the S-waiting-on-t-lang Status: Awaiting decision from T-lang label Oct 27, 2026
@petrochenkov

Copy link
Copy Markdown
Contributor

@bors r+

@rust-bors

rust-bors Bot commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

📌 Commit be649c0 has been approved by petrochenkov

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 27, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Oct 27, 2026
Reject cfg on expressions that cannot be safely removed

## Change description

This PR changes how `#[cfg]` behaves in expression positions where removing the expression would result in invalid syntax.

For example:

```rust
let _ = 1 + #[cfg(unix)] 2;
```

This currently works on Unix because the condition is `true`, but becomes invalid on non-Unix targets when the expression is removed.

The proposed change rejects `cfg` in these positions regardless of whether the condition is `true` or `false`. The goal is to avoid code whose validity depends on the target and to make the behavior more predictable as `stmt_expr_attributes` is stabilized.

## Summary of the discussion

@petrochenkov pointed out that this differs from the usual token-based model for macros: `#[cfg(true)] expr` produces `expr`, while `#[cfg(false)] expr` produces no tokens. From that perspective, only the latter naturally results in an error.

On the other hand, @estebank pointed out that these cases are easy to introduce accidentally and may only be discovered when the code is compiled for another target. This becomes more important with the stabilization of expression attributes.

We also discussed that this is technically a breaking change, since some currently accepted code such as `#[cfg(true)]` inside a macro invocation would stop compiling (rust-lang#159580 (comment)). The conclusion was that this is effectively closing a stability hole, and the amount of affected code is expected to be very small.

The current implementation also uses `RemoveNodeNotSupported` for these cases and adds coverage for both `#[cfg(true)]` and `#[cfg(false)]`.
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Oct 27, 2026
Reject cfg on expressions that cannot be safely removed

## Change description

This PR changes how `#[cfg]` behaves in expression positions where removing the expression would result in invalid syntax.

For example:

```rust
let _ = 1 + #[cfg(unix)] 2;
```

This currently works on Unix because the condition is `true`, but becomes invalid on non-Unix targets when the expression is removed.

The proposed change rejects `cfg` in these positions regardless of whether the condition is `true` or `false`. The goal is to avoid code whose validity depends on the target and to make the behavior more predictable as `stmt_expr_attributes` is stabilized.

## Summary of the discussion

@petrochenkov pointed out that this differs from the usual token-based model for macros: `#[cfg(true)] expr` produces `expr`, while `#[cfg(false)] expr` produces no tokens. From that perspective, only the latter naturally results in an error.

On the other hand, @estebank pointed out that these cases are easy to introduce accidentally and may only be discovered when the code is compiled for another target. This becomes more important with the stabilization of expression attributes.

We also discussed that this is technically a breaking change, since some currently accepted code such as `#[cfg(true)]` inside a macro invocation would stop compiling (rust-lang#159580 (comment)). The conclusion was that this is effectively closing a stability hole, and the amount of affected code is expected to be very small.

The current implementation also uses `RemoveNodeNotSupported` for these cases and adds coverage for both `#[cfg(true)]` and `#[cfg(false)]`.
rust-bors Bot pushed a commit that referenced this pull request Oct 27, 2026
…uwer

Rollup of 22 pull requests

Successful merges:

 - #159580 (Reject cfg on expressions that cannot be safely removed)
 - #162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - #162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - #163059 (Recover invalid return type until `{`, `}` or `;`)
 - #163672 (Use runCodeGen Abstraction for new LLVM)
 - #164028 (Add a future incompat warning for #[no_link])
 - #164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - #164345 (fix: handle `false` in root contexts)
 - #164494 (drop ands which are a superset of other ands)
 - #164766 (Unstably introduce MVP edition migration lint `unmarked_unchecked_type_aliases` together with bikeshed attribute `#[rustc_unchecked_type_alias]`)
 - #164785 (delegation: emit error when there is no field for `Self` mapping)
 - #164799 (Don't use `IntoIterator` in parallel API)
 - #164871 (Refactor call argument codegen)
 - #164648 (parse inline and rustc_force_inline with same parser)
 - #164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - #164900 (make tool_attrs method to retrieve tool attributes.)
 - #164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - #164996 (miri: add missing alignment check in write_bytes)
 - #165012 (Remove Span::eq_ctxt())
 - #165013 ([tiny] Add missing backticks around lifetime name)
 - #165024 (rustdoc-search: rank re-export lower)
 - #165028 (Update enzyme to fix one bug related to higher-order derivatives)

> [!WARNING]
> This rollup conflicts with pending auto build #165042 and may need to be recreated if the pending build succeeds.
rust-bors Bot pushed a commit that referenced this pull request Oct 27, 2026
…uwer

Rollup of 21 pull requests

Successful merges:

 - #159580 (Reject cfg on expressions that cannot be safely removed)
 - #162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - #162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - #163059 (Recover invalid return type until `{`, `}` or `;`)
 - #163672 (Use runCodeGen Abstraction for new LLVM)
 - #164028 (Add a future incompat warning for #[no_link])
 - #164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - #164345 (fix: handle `false` in root contexts)
 - #164494 (drop ands which are a superset of other ands)
 - #164785 (delegation: emit error when there is no field for `Self` mapping)
 - #164799 (Don't use `IntoIterator` in parallel API)
 - #164871 (Refactor call argument codegen)
 - #164648 (parse inline and rustc_force_inline with same parser)
 - #164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - #164900 (make tool_attrs method to retrieve tool attributes.)
 - #164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - #164996 (miri: add missing alignment check in write_bytes)
 - #165012 (Remove Span::eq_ctxt())
 - #165013 ([tiny] Add missing backticks around lifetime name)
 - #165024 (rustdoc-search: rank re-export lower)
 - #165028 (Update enzyme to fix one bug related to higher-order derivatives)
rust-bors Bot pushed a commit that referenced this pull request Oct 28, 2026
…uwer

Rollup of 21 pull requests

Successful merges:

 - #159580 (Reject cfg on expressions that cannot be safely removed)
 - #162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - #162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - #163059 (Recover invalid return type until `{`, `}` or `;`)
 - #163672 (Use runCodeGen Abstraction for new LLVM)
 - #164028 (Add a future incompat warning for #[no_link])
 - #164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - #164345 (fix: handle `false` in root contexts)
 - #164494 (drop ands which are a superset of other ands)
 - #164785 (delegation: emit error when there is no field for `Self` mapping)
 - #164799 (Don't use `IntoIterator` in parallel API)
 - #164871 (Refactor call argument codegen)
 - #164648 (parse inline and rustc_force_inline with same parser)
 - #164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - #164900 (make tool_attrs method to retrieve tool attributes.)
 - #164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - #164996 (miri: add missing alignment check in write_bytes)
 - #165012 (Remove Span::eq_ctxt())
 - #165013 ([tiny] Add missing backticks around lifetime name)
 - #165024 (rustdoc-search: rank re-export lower)
 - #165028 (Update enzyme to fix one bug related to higher-order derivatives)
@traviscross traviscross added the waived-reference-pr This language change does not need a Reference PR. label Oct 28, 2026
rust-bors Bot pushed a commit that referenced this pull request Oct 28, 2026
…uwer

Rollup of 21 pull requests

Successful merges:

 - #159580 (Reject cfg on expressions that cannot be safely removed)
 - #162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - #162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - #163059 (Recover invalid return type until `{`, `}` or `;`)
 - #163672 (Use runCodeGen Abstraction for new LLVM)
 - #164028 (Add a future incompat warning for #[no_link])
 - #164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - #164345 (fix: handle `false` in root contexts)
 - #164494 (drop ands which are a superset of other ands)
 - #164785 (delegation: emit error when there is no field for `Self` mapping)
 - #164799 (Don't use `IntoIterator` in parallel API)
 - #164871 (Refactor call argument codegen)
 - #164648 (parse inline and rustc_force_inline with same parser)
 - #164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - #164900 (make tool_attrs method to retrieve tool attributes.)
 - #164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - #164996 (miri: add missing alignment check in write_bytes)
 - #165012 (Remove Span::eq_ctxt())
 - #165013 ([tiny] Add missing backticks around lifetime name)
 - #165024 (rustdoc-search: rank re-export lower)
 - #165028 (Update enzyme to fix one bug related to higher-order derivatives)
rust-bors Bot pushed a commit that referenced this pull request Oct 28, 2026
…uwer

Rollup of 21 pull requests



Successful merges:

 - #159580 (Reject cfg on expressions that cannot be safely removed)
 - #162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - #162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - #163059 (Recover invalid return type until `{`, `}` or `;`)
 - #163672 (Use runCodeGen Abstraction for new LLVM)
 - #164028 (Add a future incompat warning for #[no_link])
 - #164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - #164345 (fix: handle `false` in root contexts)
 - #164494 (drop ands which are a superset of other ands)
 - #164785 (delegation: emit error when there is no field for `Self` mapping)
 - #164799 (Don't use `IntoIterator` in parallel API)
 - #164871 (Refactor call argument codegen)
 - #164648 (parse inline and rustc_force_inline with same parser)
 - #164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - #164900 (make tool_attrs method to retrieve tool attributes.)
 - #164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - #164996 (miri: add missing alignment check in write_bytes)
 - #165012 (Remove Span::eq_ctxt())
 - #165013 ([tiny] Add missing backticks around lifetime name)
 - #165024 (rustdoc-search: rank re-export lower)
 - #165028 (Update enzyme to fix one bug related to higher-order derivatives)
rust-bors Bot pushed a commit that referenced this pull request Oct 28, 2026
Rollup merge of #159580 - Unique-Usman:ua/cfg, r=petrochenkov

Reject cfg on expressions that cannot be safely removed

## Change description

This PR changes how `#[cfg]` behaves in expression positions where removing the expression would result in invalid syntax.

For example:

```rust
let _ = 1 + #[cfg(unix)] 2;
```

This currently works on Unix because the condition is `true`, but becomes invalid on non-Unix targets when the expression is removed.

The proposed change rejects `cfg` in these positions regardless of whether the condition is `true` or `false`. The goal is to avoid code whose validity depends on the target and to make the behavior more predictable as `stmt_expr_attributes` is stabilized.

## Summary of the discussion

@petrochenkov pointed out that this differs from the usual token-based model for macros: `#[cfg(true)] expr` produces `expr`, while `#[cfg(false)] expr` produces no tokens. From that perspective, only the latter naturally results in an error.

On the other hand, @estebank pointed out that these cases are easy to introduce accidentally and may only be discovered when the code is compiled for another target. This becomes more important with the stabilization of expression attributes.

We also discussed that this is technically a breaking change, since some currently accepted code such as `#[cfg(true)]` inside a macro invocation would stop compiling (#159580 (comment)). The conclusion was that this is effectively closing a stability hole, and the amount of affected code is expected to be very small.

The current implementation also uses `RemoveNodeNotSupported` for these cases and adds coverage for both `#[cfg(true)]` and `#[cfg(false)]`.
@rust-bors
rust-bors Bot merged commit 6b81095 into rust-lang:main Oct 28, 2026
14 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Oct 28, 2026
darkraider01 pushed a commit to darkraider01/miri that referenced this pull request Oct 29, 2026
Reject cfg on expressions that cannot be safely removed

## Change description

This PR changes how `#[cfg]` behaves in expression positions where removing the expression would result in invalid syntax.

For example:

```rust
let _ = 1 + #[cfg(unix)] 2;
```

This currently works on Unix because the condition is `true`, but becomes invalid on non-Unix targets when the expression is removed.

The proposed change rejects `cfg` in these positions regardless of whether the condition is `true` or `false`. The goal is to avoid code whose validity depends on the target and to make the behavior more predictable as `stmt_expr_attributes` is stabilized.

## Summary of the discussion

@petrochenkov pointed out that this differs from the usual token-based model for macros: `#[cfg(true)] expr` produces `expr`, while `#[cfg(false)] expr` produces no tokens. From that perspective, only the latter naturally results in an error.

On the other hand, @estebank pointed out that these cases are easy to introduce accidentally and may only be discovered when the code is compiled for another target. This becomes more important with the stabilization of expression attributes.

We also discussed that this is technically a breaking change, since some currently accepted code such as `#[cfg(true)]` inside a macro invocation would stop compiling (rust-lang/rust#159580 (comment)). The conclusion was that this is effectively closing a stability hole, and the amount of affected code is expected to be very small.

The current implementation also uses `RemoveNodeNotSupported` for these cases and adds coverage for both `#[cfg(true)]` and `#[cfg(false)]`.
darkraider01 pushed a commit to darkraider01/miri that referenced this pull request Oct 29, 2026
…uwer

Rollup of 21 pull requests



Successful merges:

 - rust-lang/rust#159580 (Reject cfg on expressions that cannot be safely removed)
 - rust-lang/rust#162597 (raise ambiguity error on attribute macro that could be tool attribute)
 - rust-lang/rust#162808 (Enable `--generate-link-to-definition` rustdoc option on std docs)
 - rust-lang/rust#163059 (Recover invalid return type until `{`, `}` or `;`)
 - rust-lang/rust#163672 (Use runCodeGen Abstraction for new LLVM)
 - rust-lang/rust#164028 (Add a future incompat warning for #[no_link])
 - rust-lang/rust#164188 (Suggest adding lifetime for `dyn Trait` in return type)
 - rust-lang/rust#164345 (fix: handle `false` in root contexts)
 - rust-lang/rust#164494 (drop ands which are a superset of other ands)
 - rust-lang/rust#164785 (delegation: emit error when there is no field for `Self` mapping)
 - rust-lang/rust#164799 (Don't use `IntoIterator` in parallel API)
 - rust-lang/rust#164871 (Refactor call argument codegen)
 - rust-lang/rust#164648 (parse inline and rustc_force_inline with same parser)
 - rust-lang/rust#164811 (fix: Prevent ICE when comparing EII impl against generic declaration)
 - rust-lang/rust#164900 (make tool_attrs method to retrieve tool attributes.)
 - rust-lang/rust#164993 (copy_nonoverlapping: dont skip ovelrap check when src is fully uninit)
 - rust-lang/rust#164996 (miri: add missing alignment check in write_bytes)
 - rust-lang/rust#165012 (Remove Span::eq_ctxt())
 - rust-lang/rust#165013 ([tiny] Add missing backticks around lifetime name)
 - rust-lang/rust#165024 (rustdoc-search: rank re-export lower)
 - rust-lang/rust#165028 (Update enzyme to fix one bug related to higher-order derivatives)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this PR / Issue. I-lang-radar Items that are on lang's radar and will need eventual work or consideration. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-lang Relevant to the language team to-announce Announce this issue on triage meeting waived-reference-pr This language change does not need a Reference PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants