Skip to content

Rollup of 6 pull requests #128230

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

Closed
wants to merge 20 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
2a73553
Support ?Trait bounds in supertraits and dyn Trait under a feature gate
Bryanskiy Feb 23, 2024
caee195
Invert early exit conditions in `collect_tokens_trailing_token`.
nnethercote Jul 25, 2024
4288edb
Inline and remove `AttrWrapper::is_complete`.
nnethercote Jul 25, 2024
3d363c3
Move `is_complete` to the module that uses it.
nnethercote Jul 25, 2024
e631b1e
Invert the sense of `is_complete` and rename it as `needs_tokens`.
nnethercote Jul 25, 2024
a560810
Don't include inner attribute ranges in `CaptureState`.
nnethercote Jul 26, 2024
6e87858
Fix a comment.
nnethercote Jul 26, 2024
6ea2da5
Tweak a loop.
nnethercote Jul 26, 2024
55d37ae
Remove an unnecessary block.
nnethercote Jul 26, 2024
984039f
Test RUSTC_OVERRIDE_VERSION_STRING
oli-obk Apr 25, 2024
192671f
Make RUSTC_OVERRIDE_VERSION_STRING overwrite the rendered version out…
oli-obk Apr 25, 2024
33b98bf
Remove redundant option that was just encoding that a slice was empty
oli-obk Jul 26, 2024
114e0dc
CI: do not respect custom try jobs for unrolled perf builds
Kobzol Jul 26, 2024
fd9d0bf
Forbid `?Trait` bounds repetitions
Bryanskiy Jul 26, 2024
a9af0a3
Rollup merge of #121676 - Bryanskiy:polarity, r=petrochenkov
matthiaskrgr Jul 26, 2024
da74d40
Rollup merge of #124339 - oli-obk:supports_feature, r=wesleywiser
matthiaskrgr Jul 26, 2024
64eff24
Rollup merge of #128223 - nnethercote:refactor-collect_tokens, r=petr…
matthiaskrgr Jul 26, 2024
e2eb043
Rollup merge of #128224 - nnethercote:fewer-replace_ranges, r=petroch…
matthiaskrgr Jul 26, 2024
202c765
Rollup merge of #128226 - oli-obk:option_vs_empty_slice, r=petrochenkov
matthiaskrgr Jul 26, 2024
53f0849
Rollup merge of #128227 - Kobzol:ci-unrolled-perf-build-matrix, r=tgr…
matthiaskrgr Jul 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix a comment.
Imagine you have replace ranges (2..20,X) and (5..15,Y), and these tokens:
```
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x
```
If we replace (5..15,Y) first, then (2..20,X) we get this sequence
```
a,b,c,d,e,Y,_,_,_,_,_,_,_,_,_,p,q,r,s,t,u,v,w,x
a,b,X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,u,v,w,x
```
which is what we want.

If we do it in the other order, we get this:
```
a,b,X,_,_,_,_,_,_,_,_,_,_,_,_,p,q,r,s,t,u,v,w,x
a,b,X,_,_,Y,_,_,_,_,_,_,_,_,_,_,_,_,_,_,u,v,w,x
```
which is wrong. So it's true that we need the `.rev()` but the comment
is wrong about why.
  • Loading branch information
nnethercote committed Jul 26, 2024
commit 6e87858f26bcb9fadbd60f9e8ee24816a55faa80
6 changes: 3 additions & 3 deletions compiler/rustc_parse/src/parser/attr_wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,9 @@ impl ToAttrTokenStream for LazyAttrTokenStreamImpl {
// `#[cfg(FALSE)] struct Foo { #[cfg(FALSE)] field: bool }`
//
// By starting processing from the replace range with the greatest
// start position, we ensure that any replace range which encloses
// another replace range will capture the *replaced* tokens for the inner
// range, not the original tokens.
// start position, we ensure that any (outer) replace range which
// encloses another (inner) replace range will fully overwrite the
// inner range's replacement.
for (range, target) in replace_ranges.into_iter().rev() {
assert!(!range.is_empty(), "Cannot replace an empty range: {range:?}");

Expand Down