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

Remove space after negative sign in Literal to_string #87267

Merged
merged 1 commit into from Aug 4, 2021

Conversation

dtolnay
Copy link
Member

@dtolnay dtolnay commented Jul 19, 2021

Negative proc macro literal tokens used to be printed with a space between the minus sign and the magnitude. That's because impl ToString for Literal used to convert the Literal into a TokenStream, which splits the minus sign into a separate Punct token.

Literal::isize_unsuffixed(-10).to_string()  // "- 10"

This PR updates the ToString impl to directly use rustc_ast::token::Lit's ToString, which matches the way Rust negative numbers are idiomatically written without a space.

Literal::isize_unsuffixed(-10).to_string()  // "-10"

@rust-highfive
Copy link
Collaborator

r? @cjgillot

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 19, 2021
@cjgillot
Copy link
Contributor

Can this change cause any breakage in proc-macro user code?

@dtolnay
Copy link
Member Author

dtolnay commented Jul 26, 2021

@cjgillot: trivially yes, for example the following user code would break.

assert_eq!(Literal::isize_unsuffixed(-10).to_string(), "- 10");

But in general token printing only guarantees that the resulting string is valid Rust that parses to the same AST (though lossy with respect to hygiene). It does not guarantee that the precise positioning of every whitespace, trailing commas, and similar details irrelevant to Rust syntax are always kept identical across all versions of the printer.

References:

@Aaron1011
Copy link
Member

r=me once #87262 lands (since the test output will be changed).

@bors
Copy link
Contributor

bors commented Aug 3, 2021

☔ The latest upstream changes (presumably #87262) made this pull request unmergeable. Please resolve the merge conflicts.

@dtolnay
Copy link
Member Author

dtolnay commented Aug 3, 2021

@dtolnay
Copy link
Member Author

dtolnay commented Aug 3, 2021

@bors r=Aaron1011

@bors
Copy link
Contributor

bors commented Aug 3, 2021

📌 Commit 3744dc8 has been approved by Aaron1011

@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 Aug 3, 2021
JohnTitor added a commit to JohnTitor/rust that referenced this pull request Aug 3, 2021
Remove space after negative sign in Literal to_string

Negative proc macro literal tokens used to be printed with a space between the minus sign and the magnitude. That's because `impl ToString for Literal` used to convert the Literal into a TokenStream, which splits the minus sign into a separate Punct token.

```rust
Literal::isize_unsuffixed(-10).to_string()  // "- 10"
```

This PR updates the ToString impl to directly use `rustc_ast::token::Lit`'s ToString, which matches the way Rust negative numbers are idiomatically written without a space.

```rust
Literal::isize_unsuffixed(-10).to_string()  // "-10"
```
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 3, 2021
Rollup of 8 pull requests

Successful merges:

 - rust-lang#81797 (Add `core::stream::from_iter`)
 - rust-lang#87267 (Remove space after negative sign in Literal to_string)
 - rust-lang#87663 (Rustdoc accessibility: use an icon for the [-]/[+] controls)
 - rust-lang#87720 (don't use .into() to convert types to identical types (clippy::useless_conversion))
 - rust-lang#87723 (Use .contains instead of manual reimplementation.)
 - rust-lang#87729 (Remove the aarch64 `crypto` target_feature)
 - rust-lang#87731 (Update cargo)
 - rust-lang#87734 (Test dropping union fields more)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 87c8205 into rust-lang:master Aug 4, 2021
@rustbot rustbot added this to the 1.56.0 milestone Aug 4, 2021
@dtolnay dtolnay deleted the negspace branch August 4, 2021 02:05
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants