Commit graph

619 commits

Author SHA1 Message Date
Vadim Petrochenkov
bfaf4180ae Make lifetime nonterminals closer to identifier nonterminals 2018-04-06 11:52:16 +03:00
Vadim Petrochenkov
b3b5ef186c Remove more duplicated spans 2018-04-06 11:50:49 +03:00
Vadim Petrochenkov
43ad972318 Use Span::apply_mark where possible 2018-04-06 11:48:19 +03:00
Vadim Petrochenkov
e2afefd80b Get rid of SpannedIdent 2018-04-06 11:48:19 +03:00
Vadim Petrochenkov
baae274fb7 Use Span instead of SyntaxContext in Ident 2018-04-06 11:46:26 +03:00
Lymia Aluysia
bfb94ac5f4
Clean up raw identifier handling when recovering tokens from AST. 2018-03-22 10:34:51 -05:00
Lymia Aluysia
5c3d6320de
Return a is_raw parameter from Token::ident rather than having separate methods. 2018-03-18 12:16:02 -05:00
Lymia Aluysia
fad1648e0f
Initial implementation of RFC 2151, Raw Identifiers 2018-03-18 10:07:19 -05:00
Vadim Petrochenkov
ed5ea5c705 Reject _ in ident matcher 2018-03-17 22:08:18 +03:00
Vadim Petrochenkov
5d06c890fe syntax: Make _ an identifier 2018-03-17 22:08:07 +03:00
bors
a7170b0412 Auto merge of #48524 - abonander:check-macro-stability, r=petrochenkov
check stability of macro invocations

I haven't implemented tests yet but this should be a pretty solid prototype. I think as-implemented it will also stability-check macro invocations in the same crate, dunno if we want that or not.

I don't know if we want this to go through `rustc::middle::stability` or not, considering the information there wouldn't be available at the time of macro expansion (even for external crates, right?).

r? @nrc
closes #34079
cc @petrochenkov @durka @jseyfried #38356
2018-03-16 02:46:23 +00:00
Austin Bonander
69035f20b9 check stability of macro invocations 2018-03-07 16:52:28 -08:00
Michael Woerister
542bc75dea Turn features() into a query. 2018-03-05 11:05:01 +01:00
John Kåre Alsaker
b74e97cf42 Replace Rc with Lrc for shared data 2018-03-02 10:48:52 +01:00
Mark Mansi
549534e438 Update a few comments 2018-01-30 16:20:46 -06:00
Mark Mansi
786b2ca155 Fix trailing whitespace 2018-01-30 12:45:35 -06:00
Mark Mansi
3859eca851 Improved tests + typo fixes + assert 2018-01-30 12:42:51 -06:00
Mark Mansi
3c15405c25 Add feature gate + tests 2018-01-30 12:42:51 -06:00
Mark Mansi
51ef7393ef Fix typo in error message + update tests 2018-01-30 12:41:04 -06:00
Mark Mansi
f59b821944 Attempted fix for ? kleene op 2018-01-30 12:41:04 -06:00
Mark Mansi
5ac48ec826 Run rustfmt on macro_parser.rs 2018-01-30 12:38:02 -06:00
Mark Mansi
c33649cd8e Run rustfmt on quoted.rs 2018-01-30 12:32:41 -06:00
Mark Mansi
bb8110c1fc Update the macro parser to allow at most once repetitions for ? Kleene 2018-01-30 12:30:41 -06:00
Mark Mansi
760879bc88 Allow ? as a KleeneOp in the macro parser 2018-01-30 12:30:41 -06:00
kennytm
f06a391a40 Rollup merge of #47732 - mark-i-m:markim_comments_0001, r=jseyfried
Run rustfmt and add doc comments to libsyntax/ext/tt/macro_parser.rs

Similar to #47603

cc @theotherphil since you reviewed my other PR 😄

And because they are already assigned on #47603:

r? @arielb1
2018-01-30 17:10:52 +08:00
kennytm
3e39180706 Rollup merge of #47603 - mark-i-m:markim_comments_0000, r=jseyfried
Run rustfmt and add doc comments to libsyntax/ext/tt/quoted.rs

I was already going to try to understand this code to try to implement rust-lang/rfcs#2298. I figured I would put that knowledge into comments and share... This PR contains _no changes_ to the code itself -- just formatting and comments.

I'm not sure what the best way to do this is. I plan to make more such PR for other files, but I figured it would have fewer conflicts if I do it file by file...
2018-01-30 17:10:49 +08:00
Mark Mansi
576294237b fix typos 2018-01-29 17:08:11 -06:00
Mark Mansi
2184400be7 Update comment 2018-01-29 16:37:57 -06:00
Mark Mansi
e2d558ad56 A few more comments 2018-01-26 14:47:24 -06:00
Mark Mansi
02d1d92878 Still more comments 2018-01-26 14:47:24 -06:00
Mark Mansi
b01b481db3 Added/improved comments 2018-01-26 14:47:24 -06:00
Mark Mansi
6d4ed65585 Added lots of comments + minor reorganization 2018-01-26 14:47:24 -06:00
Mark Mansi
0d7f193dd3 Added a bunch of comments to macro_parser.rs 2018-01-26 14:47:24 -06:00
Mark Mansi
ac0c16d3b5 Run rustfmt on /libsyntax/ext/tt/macro_parser.rs 2018-01-26 14:47:24 -06:00
John Kåre Alsaker
9a8d6b8bb5 Do not capture stderr in the compiler. Instead just panic silently for fatal errors 2018-01-26 04:52:30 +01:00
Mark Mansi
ca0c080569 Fix typos 2018-01-21 16:03:47 -06:00
Mark Mansi
49431d4966 Add a bunch of doc comments 2018-01-19 16:39:54 -06:00
Mark Mansi
c4befe1710 Run rustfmt and add comments 2018-01-19 15:46:15 -06:00
Matt Peterson
f55242583c Cleanup 2017-12-28 11:52:50 -05:00
Matt Peterson
b284419064 Add feature gate macro_lifetime_matcher 2017-12-28 11:33:44 -05:00
Michael Hewson
e12b87096a replace parse_lifetime with expect_lifetime
made `parser::Parser::expect_lifetime` public, so it can be called from `macro_parser::parse_nt`
2017-12-28 11:32:05 -05:00
Michael Hewson
03a51019a4 Resurrecting #33135
Started rebasing @sgrif's PR #33135 off of current master. (Well, actually merging it into a new branch based off current master.)

The following files still need to be fixed or at least reviewed:

- `src/libsyntax/ext/tt/macro_parser.rs`: calls `Parser::parse_lifetime`, which doesn't exist anymore
- `src/libsyntax/parse/parser.rs`: @sgrif added an error message to `Parser::parse_lifetime`. Code has since been refactored, so I just took it out for now.
- `src/libsyntax/ext/tt/transcribe.rs`: This code has been refactored bigtime. Not sure whether @sgrif's changes here are still necessary. Took it out for this commit.
2017-12-28 11:32:05 -05:00
Tim Neumann
bc638b8635 Rollup merge of #44088 - bjorn3:better_trace_macros, r=jseyfried
Fix "new trace_macros doesn't work if there's an error during expansion"

Fixes #43493
2017-09-17 13:19:00 +02:00
bjorn3
8bb7dba9c7
Dont abort on first macro error 2017-09-02 17:21:13 +02:00
Vadim Petrochenkov
3da868dcb6 Make fields of Span private 2017-08-30 01:38:54 +03:00
bors
8df670b6a6 Auto merge of #43540 - petrochenkov:pathrelax, r=nikomatsakis
syntax: Relax path grammar

TLDR: Accept the disambiguator `::` in "type" paths (`Type::<Args>`), accept the disambiguator `::` before parenthesized generic arguments (`Fn::(Args)`).

The "turbofish" disambiguator `::<>` in expression paths is a necessary evil required for path parsing to be both simple and to give reasonable results.
Since paths in expressions usually refer to values (but not necessarily, e.g. `Struct::<u8> { field: 0 }` is disambiguated, but refers to a type), people often consider `::<>` to be inherent to *values*, and not *expressions* and want to write disambiguated paths for values even in contexts where disambiguation is not strictly necessary, for example when a path is passed to a macro `m!(Vec::<i32>::new)`.
The problem is that currently, if the disambiguator is not *required*, then it's *prohibited*. This results in confusion - see https://github.com/rust-lang/rust/issues/41740, https://internals.rust-lang.org/t/macro-path-uses-novel-syntax/5561.

This PR makes the disambiguator *optional* instead of prohibited in contexts where it's not strictly required, so people can pass paths to macros in whatever form they consider natural (e.g. disambiguated form for value paths).
This PR also accepts the disambiguator in paths with parenthesized arguments (`Fn::(Args)`) for consistency and to simplify testing of stuff like https://github.com/rust-lang/rust/pull/41856#issuecomment-301219194.

Closes https://github.com/rust-lang/rust/issues/41740

cc @rust-lang/lang
r? @nikomatsakis
2017-08-21 23:03:57 +00: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
Eduard-Mihai Burtescu
8a4facc3c3 syntax: #[allow_internal_unsafe] bypasses the unsafe_code lint in macros. 2017-08-12 09:14:50 +03:00
Vadim Petrochenkov
804459bdca Issue warnings for unnecessary path disambiguators 2017-08-11 02:47:22 +03:00
Isaac van Bakel
400075d9d9 Fixed all unnecessary muts in language core 2017-08-01 23:01:24 +01:00