rust-lang / rust-lang/rust

`error: expected statement after outer attribute` gone?

Open
#147,999 1 comment 0 reactions 1 assignee View on GitHub

@fmease is already working on this.

Since Oct 24, 2025.

A-attributes A-doctests C-bug T-rustdoc
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

Upgrading from Rust 1.86 to 1.87 causes tests that were supposed to fail not to fail anymore, but I could not find a Compatibility Note about that, so I wonder if that is intentional or a regression.

Reproduction steps

  1. Create a new library: cargo new a --lib
  2. Modify src/lib.rs:
    //! ```rust
    //! #[derive(Clone)]
    //! ```
    
  3. Run cargo test with 1.86 and expect a failure:
    error: expected statement after outer attribute
     --> src/lib.rs:2:1
      |
    3 | #[derive(Clone)]
      |
    
  4. Append ,compile_fail to the first line:
    //! ```rust,compile_fail
    //! #[derive(Clone)]
    //! ```
    
  5. Run cargo test with 1.86 and expect success:
    test src/lib.rs - (line 1) - compile fail ... ok
    
  6. Retry steps 1-3 with 1.87+, which does not fail anymore:
    test src/lib.rs - (line 1) ... ok
    
  7. Retry steps 1-5 with 1.87+, which now fails:
    Test compiled successfully, but it's marked `compile_fail`.
    

Expected result

With 1.87+, step 3 should fail and step 5 should succeed as before, or it should be mentioned in the Compatibility Notes.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.