| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
|
|
|
|
|
|
Fix {:#?} representation of proc_macro::Literal
Before:
```rust
TokenStream [
Ident {
ident: "name",
span: #0 bytes(37..41),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(42..43),
},
Literal { lit: Lit { kind: Str, symbol: "SNPP", suffix: None }, span: Span { lo: BytePos(44), hi: BytePos(50), ctxt: #0 } },
Punct {
ch: ',',
spacing: Alone,
span: #0 bytes(50..51),
},
Ident {
ident: "owner",
span: #0 bytes(56..61),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(62..63),
},
Literal { lit: Lit { kind: Str, symbol: "Canary M Burns", suffix: None }, span: Span { lo: BytePos(64), hi: BytePos(80), ctxt: #0 } },
]
```
After:
```rust
TokenStream [
Ident {
ident: "name",
span: #0 bytes(37..41),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(42..43),
},
Literal {
kind: Str,
symbol: "SNPP",
suffix: None,
span: #0 bytes(44..50),
},
Punct {
ch: ',',
spacing: Alone,
span: #0 bytes(50..51),
},
Ident {
ident: "owner",
span: #0 bytes(56..61),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(62..63),
},
Literal {
kind: Str,
symbol: "Canary M Burns",
suffix: None,
span: #0 bytes(64..80),
},
]
```
|
|
|
|
|
|
Before:
TokenStream [
Ident {
ident: "name",
span: #0 bytes(37..41),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(42..43),
},
Literal { lit: Lit { kind: Str, symbol: "SNPP", suffix: None }, span: Span { lo: BytePos(44), hi: BytePos(50), ctxt: #0 } },
Punct {
ch: ',',
spacing: Alone,
span: #0 bytes(50..51),
},
Ident {
ident: "owner",
span: #0 bytes(56..61),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(62..63),
},
Literal { lit: Lit { kind: Str, symbol: "Canary M Burns", suffix: None }, span: Span { lo: BytePos(64), hi: BytePos(80), ctxt: #0 } },
]
After:
TokenStream [
Ident {
ident: "name",
span: #0 bytes(37..41),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(42..43),
},
Literal {
kind: Str,
symbol: "SNPP",
suffix: None,
span: #0 bytes(44..50),
},
Punct {
ch: ',',
spacing: Alone,
span: #0 bytes(50..51),
},
Ident {
ident: "owner",
span: #0 bytes(56..61),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(62..63),
},
Literal {
kind: Str,
symbol: "Canary M Burns",
suffix: None,
span: #0 bytes(64..80),
},
]
|
|
Stabilize `Span::mixed_site`
Closes https://github.com/rust-lang/rust/issues/65049.
cc https://github.com/rust-lang/rust/issues/54727#issuecomment-580647446
Pre-requisite for https://github.com/rust-lang/rust/pull/68717 ("Stabilize fn-like proc macros in expression, pattern and statement positions").
Stabilization report: https://github.com/rust-lang/rust/pull/68716#issuecomment-581076337.
|
|
|
|
|
|
Rollup of 7 pull requests
Successful merges:
- #69041 (proc_macro: Stabilize `Span::resolved_at` and `Span::located_at`)
- #69813 (Implement BitOr and BitOrAssign for the NonZero integer types)
- #70712 (stabilize BTreeMap::remove_entry)
- #71168 (Deprecate `{Box,Rc,Arc}::into_raw_non_null`)
- #71544 (Replace filter_map().next() calls with find_map())
- #71545 (Fix comment in docstring example for Error::kind)
- #71548 (Add missing Send and Sync impls for linked list Cursor and CursorMut.)
Failed merges:
r? @ghost
|
|
|
|
|
|
|
|
|
|
|
|
They used to be covered by `optin_builtin_traits` but negative impls
are now applicable to all traits, not just auto traits.
This also adds docs in the unstable book for the current state of auto traits.
|
|
|
|
|
|
|
|
This should allow LexError to play much nicer with the `?` operator.
|
|
fix various typos
|
|
|
|
|
|
This flag opts out of the min-const-fn checks entirely, which is usually
not what we want. The few cases where the flag is still necessary have
been annotated.
|
|
|
|
|
|
|
|
|
|
|
|
This commit stabilizes RFC 2008 (#44109) by removing the feature gate.
Signed-off-by: David Wood <david@davidtw.co>
|
|
Tracking issue: https://github.com/rust-lang/rust/issues/61129
|
|
|
|
|
|
Previously in was implemented using a special hack in the metadata loader
|
|
Since its inception rustbuild has always worked in three stages: one for
libstd, one for libtest, and one for rustc. These three stages were
architected around crates.io dependencies, where rustc wants to depend
on crates.io crates but said crates don't explicitly depend on libstd,
requiring a sysroot assembly step in the middle. This same logic was
applied for libtest where libtest wants to depend on crates.io crates
(`getopts`) but `getopts` didn't say that it depended on std, so it
needed `std` built ahead of time.
Lots of time has passed since the inception of rustbuild, however,
and we've since gotten to the point where even `std` itself is depending
on crates.io crates (albeit with some wonky configuration). This
commit applies the same logic to the two dependencies that the `test`
crate pulls in from crates.io, `getopts` and `unicode-width`. Over the
many years since rustbuild's inception `unicode-width` was the only
dependency picked up by the `test` crate, so the extra configuration
necessary to get crates building in this crate graph is unlikely to be
too much of a burden on developers.
After this patch it means that there are now only two build phasese of
rustbuild, one for libstd and one for rustc. The libtest/libproc_macro
build phase is all lumped into one now with `std`.
This was originally motivated by rust-lang/cargo#7216 where Cargo was
having to deal with synthesizing dependency edges but this commit makes
them explicit in this repository.
|
|
Split off from #62855
This PR deerializes the declaration `Span` and attributes for all
procedural macros from their underlying function definitions.
This allows Rustdoc to properly render doc comments
and source links when inlining procedural macros across crates
|
|
|
|
rustbuild
Remove some random unnecessary lint `allow`s
|
|
r=dtolnay,Centril
Use mem::take instead of mem::replace with default
|
|
|
|
|
|
|
|
The errors are either:
- The meta-variable used in the right-hand side is not bound (or defined) in the
left-hand side.
- The meta-variable used in the right-hand side does not repeat with the same
kleene operator as its binder in the left-hand side. Either it does not repeat
enough, or it uses a different operator somewhere.
This change should have no semantic impact.
|
|
|
|
This updates the `Extend` implementations to use `for_each` for many
collections: `BinaryHeap`, `BTreeMap`, `BTreeSet`, `LinkedList`, `Path`,
`TokenStream`, `VecDeque`, and `Wtf8Buf`.
Folding with `for_each` enables better performance than a `for`-loop for
some iterators, especially if they can just forward to internal
iterators, like `Chain` and `FlatMap` do.
|
|
Introduce proc_macro::Span::source_text
A function to extract the actual source behind a Span.
Background: I would like to use `syn` in a `build.rs` script to parse the rust code, and extract part of the source code. However, `syn` only gives access to proc_macro2::Span, and i would like to get the source code behind that.
I opened an issue on proc_macro2 bug tracker for this feature https://github.com/alexcrichton/proc-macro2/issues/110 and @alexcrichton said the feature should first go upstream in proc_macro. So there it is!
Since most of the Span API is unstable anyway, this is guarded by the same `proc_macro_span` feature as everything else.
|
|
|