Lukas Wirth
d1ca505525
fix: Fix pat fragment handling in 2021 edition
2023-04-24 22:21:37 +02:00
Lukas Wirth
a2a3fecae3
Option begone part 2
2023-04-16 19:20:48 +02:00
Lukas Wirth
71b50f9f09
Record eager expansion errors in EagerCallInfo
2023-04-16 16:11:59 +02:00
Lukas Wirth
41a46a78f2
Make tt generic over the span data
2023-01-31 14:58:16 +01:00
Daniel Eades
cc80c5bd07
remove unnecessary lazy evaluations
2023-01-02 15:02:54 +00:00
Lukas Wirth
78f33c0e96
Expand unmatched mbe fragments to reasonable default token trees
...
Currently we expand unmatched fragments by not replacing them at all,
leaving us with `$ident`. This trips up the parser or subsequent macro
calls. Instead it makes more sense to replace these with some reasonable
default depending on the fragment kind which should make more recursive
macro calls work better for completions.
2022-10-10 14:27:05 +02:00
Amos Wenger
816f7fe12a
Run cargo fix --edition-idioms
2022-07-20 15:02:08 +02:00
Amos Wenger
23d25a3094
Enable extra warnings required by rust-lang/rust
2022-07-20 15:00:17 +02:00
Lukas Wirth
1505b6a9b4
internal: Split unresolve proc-macro error out of mbe
2022-02-22 10:08:00 +01:00
Florian Diebold
bdb7ae5dd0
Rename syntax_node_to_token_tree_censored
2022-02-09 13:45:31 +01:00
Florian Diebold
1a5aa84e9f
Track synthetic tokens, to be able to remove them again later
2022-02-08 18:13:18 +01:00
Florian Diebold
cff209f152
WIP: Actually fix up syntax errors in attribute macro input
2022-02-07 18:12:51 +01:00
Lukas Wirth
2ad71f1350
Shrink mbe::ExpandError
and mbe::ParseError
2022-02-03 17:25:24 +01:00
Lukas Wirth
a0e0e4575b
Simplify
2022-01-02 02:39:14 +01:00
Aleksey Kladov
afffa096f6
add TopEntryPoint
2021-12-28 17:00:55 +03:00
Aleksey Kladov
74de79b1da
internal: rename
2021-12-25 22:02:26 +03:00
Aleksey Kladov
1055a6111a
port mbe to soa tokens
2021-12-12 19:06:40 +03:00
Lukas Wirth
a9c4c6da4c
Fix mbe::Shift::new not accounting for non-ident token ids
2021-11-22 18:00:32 +01:00
Lukas Wirth
64cb09ddea
Add to macro testing infra to emit token map ids
2021-11-22 16:51:09 +01:00
Aleksey Kladov
d4d67406d7
internal: clean up code duplication
2021-10-10 21:08:10 +03:00
Aleksey Kladov
634f047d90
internal: add integrated test for token censoring
2021-10-10 16:52:21 +03:00
Aleksey Kladov
ef1251f696
feat: report errors in macro definition
...
Reporting macro *definition* error at the macro *call site* is a rather
questionable approach, but at least we don't erase the errors
altogether!
2021-10-09 15:23:55 +03:00
Aleksey Kladov
8e9003447c
future proof structure
2021-10-09 14:48:38 +03:00
Aleksey Kladov
613609cc5e
minor: cleanup
2021-10-02 20:38:39 +03:00
Aleksey Kladov
104cd0ce88
internal: make name consistent with usage
2021-09-06 18:34:03 +03:00
Aleksey Kladov
dbb702cfc1
internal: remove accidental code re-use
...
FragmentKind played two roles:
* entry point to the parser
* syntactic category of a macro call
These are different use-cases, and warrant different types. For example,
macro can't expand to visibility, but we have such fragment today.
This PR introduces `ExpandsTo` enum to separate this two use-cases.
I suspect we might further split `FragmentKind` into `$x:specifier` enum
specific to MBE, and a general parser entry point, but that's for
another PR!
2021-09-05 22:36:36 +03:00
Aleksey Kladov
81602f8a5d
internal: reduce coupling
...
tt is a data structure, data structures cant' go wrong, they shouldn't
have the knowledge that the world outside of them has all kinds of
errors.
2021-08-31 19:14:33 +03:00
bors[bot]
fae440c32a
Merge #10025
...
10025: Don't mutate syntax trees when preparing proc-macro input r=Veykril a=Veykril
Fixes #10013
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-08-28 14:14:54 +00:00
Lukas Wirth
d6134b6802
Don't mutate syntax trees when preparing proc-macro input
2021-08-25 18:57:24 +02:00
Lukas Wirth
5fb8c0ddfd
Remove MappedSubtree
2021-08-21 18:19:18 +02:00
Lukas Wirth
177c70128c
Map attribute input tokens correctly
2021-08-21 18:13:41 +02:00
Aleksey Kladov
9aa6be71a5
internal: remove useless helpers
...
We generally avoid "syntax only" helper wrappers, which don't do much:
they make code easier to write, but harder to read. They also make
investigations harder, as "find_usages" needs to be invoked both for the
wrapped and unwrapped APIs
2021-08-09 15:58:21 +03:00
Clemens Wasser
47747cd412
Apply some clippy suggestions
2021-06-21 16:40:21 +02:00
Maan2003
c9b4ac5be4
clippy::redudant_borrow
2021-06-13 09:24:16 +05:30
Clemens Wasser
629e8d1ed0
Apply more clippy suggestions and update generated
2021-06-03 12:46:56 +02:00
Jonas Schievink
c8f40b1503
Fixup
2021-05-24 21:47:01 +02:00
Jonas Schievink
27bf62b70e
Move TokenMap
to its own file
2021-05-24 18:43:42 +02:00
Jonas Schievink
eaffdae300
Allow ,
to delimit macro 2.0 rules
2021-04-03 03:08:31 +02:00
Matthias Krüger
202b51bc7b
a lot of clippy::style fixes
2021-03-21 16:15:41 +01:00
Laurențiu Nicola
fc9eed4836
Use upstream cov-mark
2021-03-08 22:19:44 +02:00
Edwin Cheng
cff2201c30
NFA parser for mbe matcher
2021-03-01 00:11:14 +08:00
Edwin Cheng
f5bf1a9650
Fix builtin macros split exprs on comma
2021-02-28 13:06:17 +08:00
Edwin Cheng
23dbf36c7d
Add benchmark test for mbe
2021-02-25 05:47:13 +08:00
Edwin Cheng
438b34dcee
Simpilfy mbe parsing
2021-01-30 16:12:30 +08:00
Edwin Cheng
706ac8256d
Simplify mbe match error.
...
Handle parse error in rule parsing instead of match in mbe
2021-01-30 00:21:43 +08:00
Edwin Cheng
4c7d8cbfbf
Rename mbe_expander for consistency
2021-01-29 20:23:38 +08:00
Edwin Cheng
ce4eeec1bf
Support Macro v2 in mbe
2021-01-26 05:15:47 +08:00
Vincent Esche
586f84c730
Fixed typos in public type names
2021-01-09 15:41:29 +01:00
Edwin Cheng
ede1b11741
Remove unused clones in mbe
2020-12-31 02:58:41 +08:00
Edwin Cheng
266b14d4b5
Refactor mbe parsing code
2020-12-30 02:51:06 +08:00