Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more weirdness to weird-exprs.rs #119028

Merged
merged 2 commits into from Jan 23, 2024
Merged

Add more weirdness to weird-exprs.rs #119028

merged 2 commits into from Jan 23, 2024

Conversation

oberien
Copy link
Contributor

@oberien oberien commented Dec 16, 2023

No description provided.

@rustbot
Copy link
Collaborator

rustbot commented Dec 16, 2023

r? @cjgillot

(rustbot has picked a reviewer for you, use r? to override)

@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 Dec 16, 2023
@rust-log-analyzer

This comment has been minimized.

}
}

fn cursed_macros() -> impl std::fmt::Debug {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This name is misleading. Those are not actually macro invocations, but keywords followed by ! negations and regular blocks.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's somewhat the whole purpose of weird-exprs.rs: Abuse rust's syntax to make an expression look like something different (ensuring that it'll always be parsed correctly). Similarly, fn closure_matching() does not in fact match on closures.

@cjgillot
Copy link
Contributor

Could you elaborate on the purpose of this PR? Have those examples led to bugs? Or correspond to uncovered testing area? Or is it just for the fun of the weirdness?

@oberien
Copy link
Contributor Author

oberien commented Dec 17, 2023

I see weird-exprs.rs as a culmination of multiple "goals":

  1. For weirdness sake. You should never encounter these examples in real code, but they are valid syntax. It's a fun game (and possibly check of one's knowledge about rust) to try and understand all the functions within the file.
  2. Compiler testing. As those expressions likely aren't anywhere to be found in real code, they are unlikely to be tested. However, they abuse the syntax to possibly look like other valid rust code. As the file is part of the ui tests, adding more of these weird expressions ensures that the compiler will continue to parse them correctly.

@cjgillot
Copy link
Contributor

r=me with @bjorn3 comment addressed

@oberien
Copy link
Contributor Author

oberien commented Jan 21, 2024

I've renamed the function to make it clear that these are in fact not real macros.

r? @cjgillot

@rustbot
Copy link
Collaborator

rustbot commented Jan 21, 2024

Could not assign reviewer from: cjgillot.
User(s) cjgillot are either the PR author, already assigned, or on vacation, and there are no other candidates.
Use r? to specify someone else to assign.

@cjgillot
Copy link
Contributor

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Jan 22, 2024

📌 Commit 98f5981 has been approved by cjgillot

It is now in the queue for this repository.

@bors bors 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 Jan 22, 2024
fmease added a commit to fmease/rust that referenced this pull request Jan 23, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 23, 2024
Rollup of 13 pull requests

Successful merges:

 - rust-lang#119028 (Add more weirdness to weird-exprs.rs)
 - rust-lang#119805 (Suggest array::from_fn for array initialization)
 - rust-lang#120124 (Split assembly tests for ELF and MachO)
 - rust-lang#120177 (Remove duplicate dependencies for rustc)
 - rust-lang#120185 (coverage: Don't instrument `#[automatically_derived]` functions)
 - rust-lang#120188 (compiler: update freebsd and netbsd base specs.)
 - rust-lang#120201 (Bump some deps with syn 1.0 dependencies)
 - rust-lang#120215 (Update some deps with `bitflags` v1 dependencies)
 - rust-lang#120244 (Use `Self` in `NonZero*` implementations.)
 - rust-lang#120246 (Re-add estebank to review rotation)
 - rust-lang#120252 (rename `RawTy` to `LoweredTy`)
 - rust-lang#120255 (correct my mailmap entry)
 - rust-lang#120270 (A bunch of random modifications)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 23, 2024
Rollup of 13 pull requests

Successful merges:

 - rust-lang#119028 (Add more weirdness to weird-exprs.rs)
 - rust-lang#119805 (Suggest array::from_fn for array initialization)
 - rust-lang#120124 (Split assembly tests for ELF and MachO)
 - rust-lang#120177 (Remove duplicate dependencies for rustc)
 - rust-lang#120185 (coverage: Don't instrument `#[automatically_derived]` functions)
 - rust-lang#120188 (compiler: update freebsd and netbsd base specs.)
 - rust-lang#120201 (Bump some deps with syn 1.0 dependencies)
 - rust-lang#120215 (Update some deps with `bitflags` v1 dependencies)
 - rust-lang#120244 (Use `Self` in `NonZero*` implementations.)
 - rust-lang#120246 (Re-add estebank to review rotation)
 - rust-lang#120252 (rename `RawTy` to `LoweredTy`)
 - rust-lang#120255 (correct my mailmap entry)
 - rust-lang#120270 (A bunch of random modifications)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 23, 2024
Rollup of 10 pull requests

Successful merges:

 - rust-lang#119028 (Add more weirdness to weird-exprs.rs)
 - rust-lang#119805 (Suggest array::from_fn for array initialization)
 - rust-lang#120188 (compiler: update freebsd and netbsd base specs.)
 - rust-lang#120215 (Update some deps with `bitflags` v1 dependencies)
 - rust-lang#120244 (Use `Self` in `NonZero*` implementations.)
 - rust-lang#120246 (Re-add estebank to review rotation)
 - rust-lang#120252 (rename `RawTy` to `LoweredTy`)
 - rust-lang#120255 (correct my mailmap entry)
 - rust-lang#120270 (A bunch of random modifications)
 - rust-lang#120280 (Move condition enabling the pass to `is_enabled`)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit e8f9e54 into rust-lang:master Jan 23, 2024
11 checks passed
@rustbot rustbot added this to the 1.77.0 milestone Jan 23, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jan 23, 2024
Rollup merge of rust-lang#119028 - oberien:patch-1, r=cjgillot

Add more weirdness to weird-exprs.rs
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Mar 29, 2024
Pkgsrc changes:
 * Adapt checksums and patches.

Upstream chnages:

Version 1.77.0 (2024-03-21)
==========================

- [Reveal opaque types within the defining body for exhaustiveness checking.]
  (rust-lang/rust#116821)
- [Stabilize C-string literals.]
  (rust-lang/rust#117472)
- [Stabilize THIR unsafeck.]
  (rust-lang/rust#117673)
- [Add lint `static_mut_refs` to warn on references to mutable statics.]
  (rust-lang/rust#117556)
- [Support async recursive calls (as long as they have indirection).]
  (rust-lang/rust#117703)
- [Undeprecate lint `unstable_features` and make use of it in the compiler.]
  (rust-lang/rust#118639)
- [Make inductive cycles in coherence ambiguous always.]
  (rust-lang/rust#118649)
- [Get rid of type-driven traversal in const-eval interning]
  (rust-lang/rust#119044),
  only as a [future compatiblity lint]
  (rust-lang/rust#122204) for now.
- [Deny braced macro invocations in let-else.]
  (rust-lang/rust#119062)

Compiler
--------

- [Include lint `soft_unstable` in future breakage reports.]
  (rust-lang/rust#116274)
- [Make `i128` and `u128` 16-byte aligned on x86-based targets.]
  (rust-lang/rust#116672)
- [Use `--verbose` in diagnostic output.]
  (rust-lang/rust#119129)
- [Improve spacing between printed tokens.]
  (rust-lang/rust#120227)
- [Merge the `unused_tuple_struct_fields` lint into `dead_code`.]
  (rust-lang/rust#118297)
- [Error on incorrect implied bounds in well-formedness check]
  (rust-lang/rust#118553),
  with a temporary exception for Bevy.
- [Fix coverage instrumentation/reports for non-ASCII source code.]
  (rust-lang/rust#119033)
- [Fix `fn`/`const` items implied bounds and well-formedness check.]
  (rust-lang/rust#120019)
- [Promote `riscv32{im|imafc}-unknown-none-elf` targets to tier 2.]
  (rust-lang/rust#118704)
- Add several new tier 3 targets:
  - [`aarch64-unknown-illumos`]
    (rust-lang/rust#112936)
  - [`hexagon-unknown-none-elf`]
    (rust-lang/rust#117601)
  - [`riscv32imafc-esp-espidf`]
    (rust-lang/rust#119738)
  - [`riscv32im-risc0-zkvm-elf`]
    (rust-lang/rust#117958)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

Libraries
---------

- [Implement `From<&[T; N]>` for `Cow<[T]>`.]
  (rust-lang/rust#113489)
- [Remove special-case handling of `vec.split_off
  (0)`.](rust-lang/rust#119917)

Stabilized APIs
---------------

- [`array::each_ref`]
  (https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_ref)
- [`array::each_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.array.html#method.each_mut)
- [`core::net`]
  (https://doc.rust-lang.org/stable/core/net/index.html)
- [`f32::round_ties_even`]
  (https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::round_ties_even`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
- [`mem::offset_of!`]
  (https://doc.rust-lang.org/stable/std/mem/macro.offset_of.html)
- [`slice::first_chunk`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.first_chunk)
- [`slice::first_chunk_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.first_chunk_mut)
- [`slice::split_first_chunk`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_first_chunk)
- [`slice::split_first_chunk_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_first_chunk_mut)
- [`slice::last_chunk`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last_chunk)
- [`slice::last_chunk_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.last_chunk_mut)
- [`slice::split_last_chunk`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_last_chunk)
- [`slice::split_last_chunk_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_last_chunk_mut)
- [`slice::chunk_by`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.chunk_by)
- [`slice::chunk_by_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.chunk_by_mut)
- [`Bound::map`]
  (https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.map)
- [`File::create_new`]
  (https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.create_new)
- [`Mutex::clear_poison`]
  (https://doc.rust-lang.org/stable/std/sync/struct.Mutex.html#method.clear_poison)
- [`RwLock::clear_poison`]
  (https://doc.rust-lang.org/stable/std/sync/struct.RwLock.html#method.clear_poison)

Cargo
-----

- [Extend the build directive syntax with `cargo::`.]
  (rust-lang/cargo#12201)
- [Stabilize metadata `id` format as `PackageIDSpec`.]
  (rust-lang/cargo#12914)
- [Pull out as `cargo-util-schemas` as a crate.]
  (rust-lang/cargo#13178)
- [Strip all debuginfo when debuginfo is not requested.]
  (rust-lang/cargo#13257)
- [Inherit jobserver from env for all kinds of runners.]
  (rust-lang/cargo#12776)
- [Deprecate rustc plugin support in cargo.]
  (rust-lang/cargo#13248)

Rustdoc
-----

- [Allows links in markdown headings.]
  (rust-lang/rust#117662)
- [Search for tuples and unit by type with `()`.]
  (rust-lang/rust#118194)
- [Clean up the source sidebar's hide button.]
  (rust-lang/rust#119066)
- [Prevent JS injection from `localStorage`.]
  (rust-lang/rust#120250)

Misc
----

- [Recommend version-sorting for all sorting in style guide.]
  (rust-lang/rust#115046)

Internal Changes
----------------

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

- [Add more weirdness to `weird-exprs.rs`.]
  (rust-lang/rust#119028)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants