Jonas Schievink
70877428a8
Pass crate environment to proc macros
2020-12-27 15:29:47 +01:00
Jonas Schievink
26f604b907
Store invocation site for eager macros
2020-12-22 15:02:03 +01:00
Jonas Schievink
ea5cc8d07a
More accurate #[derive]
parsing
...
This now allows full paths to the derive macro
2020-12-19 01:10:56 +01:00
Jonas Schievink
08de1b4fa5
Implement RawAttr::filter
2020-12-18 18:58:42 +01:00
Lukas Wirth
dd496223f5
Node-ify lifetimes
2020-12-16 14:16:09 +01:00
Jonas Schievink
b238ddd21a
Make macro def krate mandatory
...
Refactors builtin derive support to go through proper name resolution
2020-12-15 20:33:05 +01:00
Jonas Schievink
c31c3246a8
Basic support for decl macros 2.0
2020-12-15 18:43:34 +01:00
Jonas Schievink
c1cb595382
Move to upstream macro_rules!
model
2020-12-15 15:37:37 +01:00
bors[bot]
39aae835fd
Merge #6886
...
6886: Expand statements for macros in lowering r=matklad a=edwin0cheng
Fixes #6811
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2020-12-15 12:41:07 +00:00
Edwin Cheng
1f4da7098c
Remove obsolete comment
2020-12-15 17:25:59 +08:00
lf-
090a59970d
Resolve macro-error
diagnostics on asm & llvm_asm
...
We currently stub these out as returning unit.
This fixes spurious RA diagnostics in the following:
```rust
unsafe { asm!(""); llvm_asm!(""); }
```
2020-12-15 01:06:53 -08:00
Edwin Cheng
a68ff269a9
Expand statements for mbe in lowering
2020-12-15 14:39:15 +08:00
Jonas Schievink
81820fe52c
Implement module_path!()
2020-12-14 16:38:53 +01:00
Lukas Wirth
11f8664182
Add Lifetimes to the HIR
2020-12-12 00:56:52 +01:00
Jonas Schievink
829d9d36eb
Use decimal notation
2020-12-10 18:03:37 +01:00
Jonas Schievink
19508b474f
Double the macro token limit
2020-12-10 17:51:39 +01:00
Jonas Schievink
614e5a2272
Improve macro limit error and move to const
2020-12-10 17:50:56 +01:00
Jonas Schievink
948832d10b
format_args: handle key-value arguments
2020-12-10 13:46:47 +01:00
Aleksey Kladov
6e24321e45
Introduce anchored_path
...
They allow to represent paths like `#[path = "C:\path.rs"] mod foo;`
in a lossless cross-platform & network-transparent way.
2020-12-09 19:07:05 +03:00
Jonas Schievink
bb28aef918
Fix concat!
with integer literals
2020-12-08 20:06:41 +01:00
Jonas Schievink
da5027138d
Fix logic for determining macro calls
...
I believe this currently goes back all the way to the initial
user-written call, but that seems better than the current broken
behavior.
2020-12-08 19:11:12 +01:00
Jonas Schievink
4943ef085d
Make original_range
a method on InFile<&SyntaxNode>
2020-12-08 19:01:27 +01:00
Jonas Schievink
881c7a680b
Use the right def_crate
for builtin macros
2020-12-07 19:38:13 +01:00
Jonas Schievink
577d5f1c33
Remove resolved FIXME
2020-12-07 17:17:31 +01:00
Jonas Schievink
957fb18799
Make compile_error!
message match upstream rustc
...
It only consists of the argument passed to it
2020-12-03 19:07:37 +01:00
Jonas Schievink
3e6ffa5124
Fix proc macro token mapping
2020-12-03 18:38:05 +01:00
Jonas Schievink
bca1e5fcb8
Rename error_sink
to diagnostic_sink
2020-12-03 17:54:43 +01:00
Jonas Schievink
883c8d177d
Make compile_error!
lazy and emit a diagnostic
2020-12-03 15:48:29 +01:00
Jonas Schievink
4634bfb332
Give better diagnostic if OUT_DIR
is unset
2020-12-03 15:48:29 +01:00
Jonas Schievink
a634243634
Propagate eager expansion errors
2020-12-03 15:48:29 +01:00
Jonas Schievink
92f52c5c9a
builtin_macro: move to mbe::ExpandResult
2020-11-30 19:21:25 +01:00
bors[bot]
e437e38d7a
Merge #6659
...
6659: Explain how we get precise spans for diagnostics. r=matklad a=matklad
bors r+
🤖
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-11-28 15:16:33 +00:00
Aleksey Kladov
5a42e6bff5
Explain how we get precise spans for diagnostics.
2020-11-28 18:14:08 +03:00
bors[bot]
7f3ba7d57f
Merge #6645
...
6645: Publish diagnostics for macro expansion errors r=matklad a=jonas-schievink
This adds 2 new diagnostics, emitted during name resolution:
* `unresolved-proc-macro`, a weak warning that is emitted when a proc macro is supposed to be expanded, but was not provided by the build system. This usually means that proc macro support is turned off, but may also indicate setup issues when using rust-project.json. Being a weak warning, this should help set expectations when users see it, while not being too obstructive. We do not yet emit this for attribute macros though, just custom derives and `!` macros.
* `macro-error`, which is emitted when any macro (procedural or `macro_rules!`) fails to expand due to some error. This is an error-level diagnostic, but currently still marked as experimental, because there might be spurious errors and this hasn't been tested too well.
This does not yet emit diagnostics when expansion in item bodies fails, just for module-level macros.
Known bug: The "proc macro not found" diagnostic points at the whole item for custom derives, it should just point at the macro's name in the `#[derive]` list, but I haven't found an easy way to do that.
Screenshots:
![screenshot-2020-11-26-19:54:14](https://user-images.githubusercontent.com/1786438/100385782-f8bc2300-3023-11eb-9f27-e8f8ce9d6114.png )
![screenshot-2020-11-26-19:55:39](https://user-images.githubusercontent.com/1786438/100385784-f954b980-3023-11eb-9617-ac2eb0a0a9dc.png )
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-11-28 15:10:00 +00:00
Jonas Schievink
ec7d2bbe42
Add/Fix macro expansion profiling
2020-11-27 18:07:16 +01:00
Jonas Schievink
0432aa0ed7
Publish diagnostics for macro expansion errors
2020-11-27 13:50:22 +01:00
Jonas Schievink
1b26520971
Add dedicated error for "proc macro not found"
2020-11-27 13:50:20 +01:00
Jonas Schievink
6a9338e979
Use ExpandResult
instead of MacroResult
...
`MacroResult` is redundant
2020-11-26 16:48:17 +01:00
Jonas Schievink
c784c8ec76
Use named fields in ExpandResult
2020-11-26 16:04:23 +01:00
Jonas Schievink
9559bce311
Rename parse_macro
to parse_macro_expansion
...
This does not parse macros, it expands a macro and parses the *result*
2020-11-24 21:57:51 +01:00
Jonas Schievink
f9d0d51101
hir_expand::db: reduce fn visibility
2020-11-24 21:55:08 +01:00
Jonas Schievink
9a3bb19d32
Remove fixed FIXME, propagate errors better
2020-11-24 21:52:19 +01:00
Jonas Schievink
d5e9bf80f9
hir_expand: propagate expansion errors
2020-11-24 19:00:23 +01:00
Lukas Wirth
c868f0255f
Fill the diagnostic code field in publish_diagnostics
2020-11-17 16:23:53 +01:00
Aleksey Kladov
6158304f8b
Simplify
2020-11-06 22:30:58 +01:00
Aleksey Kladov
ba8d6d1e4e
Remove more unreachable pubs
2020-11-02 16:58:33 +01:00
Francesco Zardi
f3aa44b01d
Fix typo in comment
2020-10-21 21:51:53 +02:00
Francesco Zardi
a9d996a7c5
Add whitelist of safe intrinsics
2020-10-21 09:06:05 +02:00
Aleksey Kladov
13451d3dc4
Complete methods when receiver is a macro
2020-10-17 23:43:13 +02:00
Lukas Wirth
aaa3905fdd
Shorten type hints for std::iter Iterators
2020-10-06 19:20:42 +02:00