Vadim Petrochenkov
27235698f5
resolve: Introduce "may appear after" abstraction for macro path resolutions
2018-09-08 14:15:11 +03:00
Eduard-Mihai Burtescu
93f3f5b155
Use FxHash{Map,Set} instead of the default Hash{Map,Set} everywhere in rustc.
2018-08-28 17:04:04 +03:00
Vadim Petrochenkov
6fdb400ff2
Revert "hygiene: Make sure expansion info is set at most once for a given Mark
"
...
This reverts commit b15785b671
.
2018-08-24 02:21:52 +03:00
Scott McMurray
9e64ce1799
Parse try blocks with the try keyword instead of do catch placeholder
2018-08-19 16:53:05 -07:00
Scott McMurray
f2445fb507
Rename Catch
variants to TryBlock
...
(Not `Try` since `QuestionMark` is using that.)
2018-08-19 16:30:53 -07:00
Mark Rousskov
683a3db01f
Switch to bootstrapping from 1.29 beta
2018-08-01 11:59:08 -06:00
Esteban Küber
ed362c07ff
Do not use desugared ident when suggesting adding a type
2018-07-18 10:02:15 -07:00
Vadim Petrochenkov
fc74e35981
Remove fallback to parent modules from lexical resolution
2018-07-08 18:16:09 +03:00
Vadim Petrochenkov
94ef9f57f5
hygiene: Decouple transparencies from expansion IDs
2018-07-08 16:17:37 +03:00
Vadim Petrochenkov
01b6d7cc6f
libsyntax_pos: Tweak some visibilities
2018-07-08 16:17:36 +03:00
Vadim Petrochenkov
84f1bc8b66
Address comments
2018-06-30 01:53:32 +03:00
Vadim Petrochenkov
99ecdb3f5f
hygiene: Implement transparent marks
2018-06-30 01:53:32 +03:00
Vadim Petrochenkov
f0622dfe5d
Use Ident
s for associated item definitions in HIR
...
Remove emulation of hygiene with gensyms
2018-06-28 11:04:50 +03:00
Vadim Petrochenkov
d347270e0c
Implement #[macro_export(local_inner_macros)]
2018-06-27 13:10:16 +03:00
Berkus Karchebnyy
07479688b2
Fix typo
2018-06-25 23:44:48 +03:00
Vadim Petrochenkov
20ce91076a
hygiene: Merge NameAndSpan
into ExpnInfo
2018-06-23 21:53:24 +03:00
Vadim Petrochenkov
117cb040f1
hygiene: Make sure transparency of Mark::root()
is an implementation detail and cannot be inspected outside of hygiene.rs
2018-06-23 20:42:25 +03:00
Vadim Petrochenkov
869fa27d13
hygiene: Rename MarkKind
to Transparency
...
Move `is_builtin` for `Mark` to a separate flag
2018-06-23 20:09:21 +03:00
Vadim Petrochenkov
b15785b671
hygiene: Make sure expansion info is set at most once for a given Mark
2018-06-23 20:09:21 +03:00
Vadim Petrochenkov
9b2a89b7f1
hygiene: Give Debug
impls to hygiene structures
2018-06-23 20:09:21 +03:00
Taylor Cramer
cf844b547d
async await desugaring and tests
2018-06-21 22:36:36 -07:00
Oliver Schneider
9b1bd94e37
Add existential type definitons
2018-06-07 17:33:53 +02:00
Vadim Petrochenkov
640884bad0
Add edition to expansion info
2018-05-17 23:13:08 +03:00
Katrin Leinweber
703ecebe02
Hyperlink DOI against preferred resolver
...
https://www.doi.org/doi_handbook/3_Resolution.html#3.8
2018-05-14 07:17:56 +02:00
bobtwinkles
73e0c1e968
Fix review nits
2018-04-26 18:28:34 -04:00
bobtwinkles
498dbe4453
Implement a least upper bound for marks.
...
This is useful when trying to compute when something is lexically before
something else, but they aren't necessarily in the same SyntaxContext
2018-04-23 23:59:59 -04:00
bobtwinkles
d2dc21df02
Add documentation for SyntaxContext::remove_mark
2018-04-23 23:59:58 -04:00
Guillaume Gomez
05275dafaa
Remove unwanted auto-linking and update
2018-04-16 23:37:11 +02:00
Scott McMurray
c4b6521327
Add ok-wrapping to catch blocks, per RFC
2018-04-10 20:03:40 -07:00
Vadim Petrochenkov
baae274fb7
Use Span
instead of SyntaxContext
in Ident
2018-04-06 11:46:26 +03:00
Aidan Hobson Sayers
9b5859aea1
Remove all unstable placement features
...
Closes #22181 , #27779
2018-04-03 11:02:34 +02:00
John Kåre Alsaker
cbdf4ec03e
Remove syntax and syntax_pos thread locals
2018-03-14 11:56:01 +01:00
bors
0b90e4e8cd
Auto merge of #46551 - jseyfried:improve_legacy_modern_macro_interaction, r=nrc
...
macros: improve 1.0/2.0 interaction
This PR supports using unhygienic macros from hygienic macros without breaking the latter's hygiene.
```rust
// crate A:
#[macro_export]
macro_rules! m1 { () => {
f(); // unhygienic: this macro needs `f` in its environment
fn g() {} // (1) unhygienic: `g` is usable outside the macro definition
} }
// crate B:
#![feature(decl_macro)]
extern crate A;
use A::m1;
macro m2() {
fn f() {} // (2)
m1!(); // After this PR, `f()` in the expansion resolves to (2), not (3)
g(); // After this PR, this resolves to `fn g() {}` from the above expansion.
// Today, it is a resolution error.
}
fn test() {
fn f() {} // (3)
m2!(); // Today, `m2!()` can see (3) even though it should be hygienic.
fn g() {} // Today, this conflicts with `fn g() {}` from the expansion, even though it should be hygienic.
}
```
Once this PR lands, you can make an existing unhygienic macro hygienic by wrapping it in a hygienic macro. There is an [example](b766fa887d
) of this in the tests.
r? @nrc
2018-01-12 10:00:09 +00:00
Malo Jaffré
cbb32a9418
Fix docs for future pulldown migration
2018-01-01 14:44:12 +01:00
Michael Woerister
9faa31612f
incr.comp.: Speed up span hashing by caching expansion context hashes.
2017-12-14 10:15:10 -06:00
Jeffrey Seyfried
d052d28d70
Improve interaction between macros 2.0 and macro_rules!
.
2017-12-13 13:33:03 -08:00
Jeffrey Seyfried
f79c7e442d
Refactor MarkData
field modern: bool
to kind: MarkKind
.
2017-12-12 13:15:09 -08:00
Michael Woerister
409e39285d
incr.comp.: Properly hash and encode macro expansion information.
2017-12-01 13:48:19 +01:00
Vadim Petrochenkov
52251cd930
Compress "small" spans to 32 bits and intern "large" spans
2017-09-23 00:34:13 +03:00
bors
4ac7646d39
Auto merge of #43832 - huntiep:compiler-desugaring-enum, r=nikomatsakis
...
Implement CompilerDesugaringKind enum
This is the first step outlined in #35946 . I think that the variants of `CompilerDesugaringKind` should be changed, I didn't know what the official names for `...` and `<-` are.
I'm not to sure how tests for the compiler work, but I would imagine that tests should be added such that
`Symbol::intern(s) == CompilerDesugaringKind::from(s).as_symbol()` for valid `s`.
2017-08-18 00:26:08 +00:00
Hunter Praska
ff047a8a25
Use direct references to CompilerDesugaringKind
2017-08-16 18:46:48 -05:00
Zack M. Davis
1b6c9605e4
use field init shorthand EVERYWHERE
...
Like #43008 (f668999
), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
Hunter Praska
4acfef8f63
Implement CompilerDesugaringKind enum
2017-08-12 19:43:43 -05:00
Eduard-Mihai Burtescu
8a4facc3c3
syntax: #[allow_internal_unsafe] bypasses the unsafe_code lint in macros.
2017-08-12 09:14:50 +03:00
Jeffrey Seyfried
d4488b7df9
Simplify hygiene::Mark
application, and
...
remove variant `Token::SubstNt` in favor of `quoted::TokenTree::MetaVar`.
2017-06-26 02:05:45 +00:00
Jeffrey Seyfried
dde8dc61dd
Improve efficiency.
2017-05-25 05:52:10 +00:00
Jeffrey Seyfried
bfa2ef62a1
Hygienize librustc_typeck
.
2017-05-25 05:52:05 +00:00
Jeffrey Seyfried
1f175fa35d
Hygienize librustc_resolve
.
2017-05-25 05:51:50 +00:00
Jeffrey Seyfried
ec7c0aece1
Merge ExpnId
and SyntaxContext
.
2017-03-29 00:41:10 +00:00
Jeffrey Seyfried
1979f96549
Move syntax::ext::hygiene
to syntax_pos::hygiene
.
2017-03-29 00:41:08 +00:00