Laurențiu Nicola
e3ce88f6f2
Minor clippy perf fixes
2021-06-18 14:40:51 +03:00
Maan2003
6cc6dee9e9
clippy::useless_conversion
2021-06-13 09:25:55 +05:30
Maan2003
c9b4ac5be4
clippy::redudant_borrow
2021-06-13 09:24:16 +05:30
Jonas Schievink
31588aea04
Remove fragment kind knowledge from builtin macros
2021-05-29 17:17:08 +02:00
Jonas Schievink
c0d93bc4d6
Clarify field name
2021-05-19 20:23:26 +02:00
Jonas Schievink
ea8555b155
Simplify eager macro representation
2021-05-19 20:19:08 +02:00
Edwin Cheng
bbc151ef32
Implement concat_idents
2021-05-14 06:42:10 +08:00
bors[bot]
0900beeaa2
Merge #8776
...
8776: fix: fix unnecessary recomputations due to macros r=jonas-schievink a=jonas-schievink
This computes a macro's fragment kind eagerly (when the calling file is still available in parsed form) and stores it in the `MacroCallLoc`. This means that during expansion we no longer have to reparse the file containing the macro call, avoiding the unnecessary salsa dependencies (https://github.com/rust-analyzer/rust-analyzer/pull/8746#issuecomment-834776349 ).
Marking as draft until I manage to find a test for this problem, since for some reason `typing_inside_a_function_should_not_invalidate_expansions` does not catch this (which might indicate that I misunderstand the problem).
I've manually confirmed that this fixes the issue described in https://github.com/rust-analyzer/rust-analyzer/pull/8746#issuecomment-834776349 :
```
7ms - parse_query @ FileId(179)
12ms - SourceBinder::to_module_def
12ms - crate_def_map:wait
5ms - item_tree_query (1 calls)
7ms - ???
```
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-09 14:40:49 +00:00
Edwin Cheng
01ce37c805
Escape characters in builtin macros correctly
2021-05-09 19:57:29 +08:00
Jonas Schievink
9cf8d325a2
Precompute macro fragment kind
2021-05-09 01:36:06 +02:00
Jonas Schievink
ae84a71e4a
Expand global_asm!
to nothing
2021-04-18 18:43:45 +02:00
Jonas Schievink
86b7861612
Use named fields in MacroCallKind
2021-04-08 20:43:07 +02:00
Jonas Schievink
053dac88ca
Update OUT_DIR
diagnostic to match setting
2021-04-07 20:19:28 +02:00
Jonas Schievink
3abcdc03ba
Make ast_to_token_tree
infallible
...
It could never return `None`, so reflect that in the return type
2021-04-04 01:46:45 +02:00
Jonas Schievink
6198eb74b2
Implement edition-dependent builtin panic!
macro
2021-04-03 03:12:55 +02:00
Yilin Chen
3bb9efb6b7
use the included file as the source of expanded include macro
...
Signed-off-by: Yilin Chen <sticnarf@gmail.com>
2021-03-21 23:02:01 +08:00
Jonas Schievink
b84efbaacf
Make MacroDefId's AstId
mandatory when possible
2021-03-18 15:37:14 +01:00
Jonas Schievink
5f80364ede
Improve diagnostic when including nonexistent file
2021-03-17 21:56:09 +01:00
Jonas Schievink
bc4ecb199b
Use expect-test for builtin macro/derive tests
2021-03-10 21:05:02 +01:00
Jonas Schievink
2b8674b37e
Implement builtin cfg!
macro
2021-03-10 19:43:03 +01:00
Edwin Cheng
30402beeb2
Fix assert split exprs on comma
2021-02-28 20:46:24 +08:00
Edwin Cheng
f5bf1a9650
Fix builtin macros split exprs on comma
2021-02-28 13:06:17 +08:00
Laurențiu Nicola
4e92681aba
Disallow non-boolean literals in concat!
2021-01-25 13:31:03 +02:00
Laurențiu Nicola
ee8c678870
Unquote strings and handle boolean literals in concat!
2021-01-25 13:02:57 +02:00
Edwin Cheng
74a557857b
Fix ==
in in format causes mismatched-arg-count
2020-12-31 17:59:29 +08:00
Jonas Schievink
26f604b907
Store invocation site for eager macros
2020-12-22 15:02:03 +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
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
Jonas Schievink
81820fe52c
Implement module_path!()
2020-12-14 16:38:53 +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
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
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
92f52c5c9a
builtin_macro: move to mbe::ExpandResult
2020-11-30 19:21:25 +01:00
Aleksey Kladov
6158304f8b
Simplify
2020-11-06 22:30:58 +01:00
Aleksey Kladov
b7aa4898e0
Rename ra_hir_expand -> hir_expand
2020-08-13 16:29:33 +02:00