diff options
| author | bors <bors@rust-lang.org> | 2018-12-20 12:42:54 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-12-20 12:42:54 +0000 |
| commit | 9622f9dc4745eb59fd229477f453ae83e8044db9 (patch) | |
| tree | 4d230e44e0f31c6c44a2728e4a1e89d513bfb441 /src/libstd/sys/unix/stack_overflow.rs | |
| parent | 4755e2f3b635ad7391ba88b18672b05cbae5ba4c (diff) | |
| parent | edab6c74923cacb3058fb7942577ad27e7cd32ff (diff) | |
| download | rust-9622f9dc4745eb59fd229477f453ae83e8044db9.tar.gz rust-9622f9dc4745eb59fd229477f453ae83e8044db9.zip | |
Auto merge of #56647 - petrochenkov:dcrate2, r=alexcrichton
Rework treatment of `$crate` in procedural macros Important clarification: `$crate` below means "processed `$crate`" or "output `$crate`". In the input of a decl macro `$crate` is just two separate tokens, but in the *output of a decl macro* `$crate` is a single keyword identifier (https://github.com/rust-lang/rust/issues/55640#issuecomment-435692791). First of all, this PR removes the `eliminate_crate_var` hack. `$crate::foo` is no longer replaced with `::foo` or `::crate_name::foo` in the input of derive proc macros, it's passed to the macro instead with its precise span and hygiene data, and can be treated as any other path segment keyword (like `crate` or `self`) after that. (Note: `eliminate_crate_var` was never used for non-derive proc macros.) This creates an annoying problem - derive macros still may stringify their input before processing and expect `$crate` survive that stringification and refer to the same crate (the Rust 1.15-1.29 way of doing things). Moreover, the input of proc macro attributes and derives (but not fn-like proc macros) also effectively survives stringification before being passed to the macro (also for legacy implementation reasons). So we kind of resurrect the `eliminate_crate_var` hack in reduced form, but apply it only to AST pretty-printing. If an AST fragment is pretty-printed, the resulting *text* will have `$crate` replaced with `crate` or `::crate_name`. This should be enough to keep all the legacy cases working. Closes https://github.com/rust-lang/rust/issues/55640 Closes https://github.com/rust-lang/rust/issues/56622 r? @ghost
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions
