-
Couldn't load subscription status.
- Fork 13.9k
Manually cleanup token stream when macro expansion aborts. #100250
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
Conversation
|
(rust-highfive has picked a reviewer for you, use r? to override) |
|
r? @Aaron1011 |
|
My concern is that this could lead to compilation incorrectly succeeding, since we don't have access to a ParseSess to call delay_span_bug |
|
☔ The latest upstream changes (presumably #101757) made this pull request unmergeable. Please resolve the merge conflicts. |
e0759e3 to
cb5ea8d
Compare
|
Thanks! |
…aron1011 Manually cleanup token stream when macro expansion aborts. In case of syntax error in macro expansion, the expansion code can decide to stop processing anything. In that case, the token stream is malformed. This makes downstream users, like derive macros, ICE. In this case, this PR manually cleans up the token stream by closing all currently open delimiters. Fixes rust-lang#96818. Fixes rust-lang#80447. Fixes rust-lang#81920. Fixes rust-lang#91023.
Rollup of 12 pull requests Successful merges: - rust-lang#100250 (Manually cleanup token stream when macro expansion aborts.) - rust-lang#101014 (Fix -Zmeta-stats ICE by giving `FileEncoder` file read permissions) - rust-lang#101958 (Improve error for when query is unsupported by crate) - rust-lang#101976 (MirPhase: clarify that linting is not a semantic change) - rust-lang#102001 (Use LLVM C-API to build atomic cmpxchg and fence) - rust-lang#102008 (Add GUI test for notable traits element position) - rust-lang#102013 (Simplify rpitit handling on lower_fn_decl) - rust-lang#102021 (some post-valtree cleanup) - rust-lang#102027 (rustdoc: remove `docblock` class from `item-decl`) - rust-lang#102034 (rustdoc: remove no-op CSS `h1-6 { border-bottom-color }`) - rust-lang#102038 (Make the `normalize-overflow` rustdoc test actually do something) - rust-lang#102053 (:arrow_up: rust-analyzer) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
In case of syntax error in macro expansion, the expansion code can decide to stop processing anything. In that case, the token stream is malformed. This makes downstream users, like derive macros, ICE.
In this case, this PR manually cleans up the token stream by closing all currently open delimiters.
Fixes #96818.
Fixes #80447.
Fixes #81920.
Fixes #91023.