roife
224d0dd36e
refactor: move the logic that displays container type bounds to function fmt
2024-06-11 21:02:13 +08:00
roife
ab7c7d4501
fix: skip container header if no generics params
2024-06-11 21:02:13 +08:00
roife
9f70f87d35
internal: simplify and rename display_xxx to write_xxx for consistency
2024-06-11 21:02:13 +08:00
roife
78118f98f6
feat: add hover config for showing container bounds
2024-06-11 21:02:13 +08:00
roife
184ddc6f5b
feat: show type bounds from containers for functions
2024-06-11 21:02:13 +08:00
roife
af1291bbf3
internal: simplify and refactor write_where_clause
2024-06-11 21:02:13 +08:00
Lukas Wirth
30c04d5aa9
Remove extra parse cache from Semantics again
2024-06-10 12:04:35 +02:00
Lukas Wirth
8520a0c585
Thread more HasSource::source calls through Semantics for caching
2024-06-10 10:33:07 +02:00
Lukas Wirth
d4dc3ca83b
Register virtual workspace Cargo.toml files in the VFS
2024-06-09 12:54:50 +02:00
Wilfred Hughes
27182bb96b
chore: Prefer tracing span shorthand macros
2024-06-06 16:52:25 -07:00
Vincent Esche
78f31696da
Resolve #17344 by using .get(…)
instead of […]
in TypeOrConstParam::source(…)
...
(… and `LifetimeParam::source(…)`)
2024-06-05 11:03:56 +02:00
Lukas Wirth
9349045e09
Use dyn cache for Semantics macro resolution
2024-06-04 16:25:38 +02:00
Lukas Wirth
7d40763c88
Cache parse trees in Semantics
2024-06-04 15:29:24 +02:00
Lukas Wirth
c12f093716
Cache file_to_def
in SourceToDefCtx
2024-06-04 15:23:02 +02:00
Lukas Wirth
97b58f2846
Try caching macro calls more aggressively
2024-06-04 15:23:00 +02:00
Lukas Wirth
6f0207d594
Cleanup some inert attribute stuff
2024-06-04 12:38:20 +02:00
Lukas Wirth
60fa981df1
Simplify
2024-06-03 19:06:58 +02:00
bors
cb6b808185
Auto merge of #17315 - hamirmahal:style/simplify-string-interpolation, r=Veykril
...
style: simplify string interpolation
2024-06-03 12:29:27 +00:00
bors
9edc30a42b
Auto merge of #17312 - regexident:function-fn-ptr-type, r=Veykril
...
Add `Function::fn_ptr_type(…)` for obtaining name-erased function type
The use case of this function if being able to group functions by their function ptr type.
cc `@flodiebold`
2024-06-03 12:16:29 +00:00
Lukas Wirth
3116f76fba
feat: Enable completions within derive helper attributes
2024-06-02 09:45:57 +02:00
Lukas Wirth
c0171bdd32
fix: Fix container search failing for tokens originating within derive attributes
2024-06-01 20:57:29 +02:00
Hamir Mahal
7c34eb3880
style: simplify string interpolation
2024-05-30 16:18:49 -07:00
Vincent Esche
7b75f1113c
Add Function::fn_ptr_type(…)
for obtaining name-erased function type
2024-05-29 19:41:55 +02:00
Tavo Annus
0f6842700f
Fix data_constructor
ignoring generics for struct
2024-05-25 13:09:26 +03:00
David Barsky
a0d3a81a19
fix: ensure implied bounds from associated types are considered in autocomplete
2024-05-22 16:16:20 -04:00
David Barsky
b75301cec8
internal: refactor prefer_no_std
/prefer_prelude
bools into a struct
2024-05-22 20:46:30 +02:00
bors
6a16749eb0
Auto merge of #17277 - Veykril:find-path-fixes, r=Veykril
...
fix: Various find path fixes
Fixes https://github.com/rust-lang/rust-analyzer/issues/17271
2024-05-22 18:22:32 +00:00
Lukas Wirth
760ad445e2
Update assists test fixtures
2024-05-22 14:46:33 +02:00
Lukas Wirth
c88b421853
fix: Fix general find-path inconsistencies
2024-05-22 14:05:24 +02:00
Lukas Wirth
7bd343e085
Show fn traits in signature info for trait implementors
2024-05-18 16:22:59 +02:00
Lukas Wirth
ff79903cf6
Render closure fn trait kind in siganture help
2024-05-18 15:01:37 +02:00
Lukas Wirth
7c6f31a45b
Allow hir::Param to refer to other entity params aside from functions
2024-05-18 12:35:55 +02:00
Lukas Wirth
cd9e90cc71
Update builtin tool list
2024-05-18 10:52:05 +02:00
Lukas Wirth
aaa5426fec
internal: Add StaticLifetime to hir API
2024-05-16 08:02:51 +02:00
bors
b98690ba74
Auto merge of #17221 - Veykril:lazier-validation, r=Veykril
...
internal: Lazier macro parse tree validation
2024-05-13 15:16:46 +00:00
Lukas Wirth
caddcccea5
parse_macro_expansion_error
almost never contains values so Option
it
2024-05-13 17:02:08 +02:00
Lukas Wirth
56552f4839
Push macro-parsing error calculation out of fundamental queries
2024-05-13 16:56:26 +02:00
bors
40ab5e5f8c
Auto merge of #17220 - Veykril:hov-lit, r=Veykril
...
fix: Improve confusing literal hovers
2024-05-13 10:58:29 +00:00
Lukas Wirth
253929f6ae
Fix literal hovers being confusing and wrong for floats
2024-05-13 12:26:45 +02:00
Tavo Annus
ab18604309
Make term search fuel configurable
2024-05-08 19:46:33 +03:00
Tavo Annus
9e1adc76e5
Use unit of work as fuel instead of time
2024-05-07 22:13:27 +03:00
Tavo Annus
d253617bba
Add time based fuel to term search
2024-05-06 22:13:09 +03:00
Tavo Annus
c3ab435b54
Collapse term search exprs before Cartesian product to avoid OOM
2024-05-06 20:29:34 +03:00
Wilfred Hughes
c981ff0944
fix: Tracing span names should match function names
...
When viewing traces, it's slightly confusing when the span name doesn't
match the function name. Ensure the names are consistent.
(It might be worth moving most of these to use #[tracing::instrument]
so the name can never go stale. @davidbarsky suggested that is marginally
slower, so I've just done the simple change here.)
2024-04-30 11:22:47 -07:00
bors
84ef3cfa91
Auto merge of #17138 - Kohei316:generate-function-assist-for-new, r=Veykril
...
feature: Make generate function assist generate a function as a constructor if the generated function has the name "new" and is an asscociated function.
close #17050
This PR makes `generate function assist` generate a function as a constructor if the generated function has the name "new" and is an asscociated function.
If the asscociate type is a record struct, it generates the constructor like this.
```rust
impl Foo {
fn new() -> Self {
Self { field_1: todo!(), field_2: todo!() }
}
}
```
If the asscociate type is a tuple struct, it generates the constructor like this.
```rust
impl Foo {
fn new() -> Self {
Self(todo!(), todo!())
}
}
```
If the asscociate type is a unit struct, it generates the constructor like this.
```rust
impl Foo {
fn new() -> Self {
Self
}
}
```
If the asscociate type is another adt, it generates the constructor like this.
```rust
impl Foo {
fn new() -> Self {
todo!()
}
}
```
2024-04-30 12:09:34 +00:00
morine0122
ff2629d651
Make generate function assist generate a function as a constructor if the name of function is new
2024-04-30 17:02:48 +09:00
Lukas Wirth
18ca22a98e
Show workspace info in the status bar
2024-04-26 11:28:33 +02:00
bors
65eda41e65
Auto merge of #17021 - roife:add-hover-limits-for-adts, r=Veykril
...
Support hovering limits for adts
Fix #17009
1. Currently, r-a supports limiting the number of struct fields displayed when hovering. This PR extends it to support enum variants and union fields. Since the display of these three (ADTs) is similar, this PR extends 'hover_show_structFields' to 'hover_show_adtFieldsOrVariants'.
2. This PR also resolved the problem that the layout of ADT was not restricted by display limitations when hovering on the Self type.
3. Additionally, this PR changes the default value of display limitations to `10` (instead of the original `null`), which helps users discover this feature.
2024-04-25 07:23:27 +00:00
Bao Zhiyuan
5c88e98419
different error code based on variant
2024-04-23 20:54:03 +08:00
Lukas Wirth
a2ed6837bc
Allow rust files to be used linkedProjects
2024-04-21 16:26:55 +02:00
Laurențiu Nicola
4c94e69115
Add in-rust-tree feature to hir-expand
2024-04-20 18:44:27 +03:00
roife
aa1f1344cc
fix: remove space within {}
when no fields in struct
2024-04-20 10:07:33 +08:00
roife
43576989a1
Add hovering limitations support for variants
2024-04-20 09:14:00 +08:00
roife
e0e28ec856
fix: add a separate setting for enum variants
2024-04-19 21:45:56 +08:00
Lukas Wirth
6bfdd38c69
Render matched macro arm on hover of macro calls
2024-04-18 10:51:58 +02:00
bors
46702ffc1a
Auto merge of #17087 - davidbarsky:david/fix-some-tracing-spans, r=Veykril
...
chore: fix a few spans without `.entered()`
2024-04-17 16:59:33 +00:00
Lukas Wirth
011c2127c8
Update per_query_memory_usage
query listing
2024-04-17 18:44:50 +02:00
David Barsky
5ba37f3f8e
chore: fix a few spans without .entered()
2024-04-17 12:44:49 -04:00
roife
01c3559bf3
Update tests and docs for hover_show_adtFieldsOrVariants
2024-04-16 16:27:56 +08:00
roife
21da6c6164
Add config hover_show_adtFieldsOrVariants to handle hovering limitation for ADTs
2024-04-16 16:26:23 +08:00
Lukas Wirth
531a270d91
Generally optimize diagnostics performance
2024-04-15 22:15:41 +02:00
Lukas Wirth
1915980031
fix: Fix impl Trait<Self>
causing stackoverflows
2024-04-15 15:41:20 +02:00
Lukas Wirth
a82e028e30
Cleanup util::Generics method names
2024-04-06 14:29:40 +02:00
Lukas Wirth
f3567bb604
Arc CrateData::cfg_options
2024-04-06 13:55:10 +02:00
Lukas Wirth
5957835cdf
Consider exported_name="main"
functions in test modules as tests
2024-04-04 14:51:10 +02:00
Lukas Wirth
86967032f7
Consider ADT generic parameter defaults for unsubstituted layout calculations
2024-04-03 09:01:27 +02:00
bors
c3b8c2a254
Auto merge of #16996 - Veykril:lt-err, r=Veykril
...
internal: Lower outlive goals, respect them in display impls
2024-04-02 14:13:22 +00:00
Lukas Wirth
707be6b99c
Adjust display impls to respect lifetime bounds
2024-04-02 14:51:08 +02:00
Lukas Wirth
0927f86247
Replace static_lifetime usages with error_lifetime, lower outlives goals
2024-04-02 14:51:06 +02:00
bors
23dd54b010
Auto merge of #16968 - roife:fix-issue-16801, r=Veykril
...
fix: silence mismatches involving unresolved projections
fix #16801
2024-04-01 20:05:33 +00:00
roife
3d373fec8c
tests: add tests for mismatches with unresolved projections
2024-04-02 01:32:43 +08:00
roife
8d6b65c544
fix: silence mismatches involving unresolved projections
2024-04-02 01:27:22 +08:00
dfireBird
69c4ac6304
implement len and is_empty method in generic_params
2024-03-29 18:26:46 +05:30
dfireBird
34a8cd6a7a
fix ADT hover considering only type or const len not lifetimes
2024-03-28 21:53:22 +05:30
bors
0583aaa555
Auto merge of #16805 - dfireBird:lifetime_lowering, r=Veykril
...
feat: Implement resolving and lowering of Lifetimes (no inference yet)
2024-03-26 07:58:43 +00:00
Young-Flash
ba8c9810aa
review update
2024-03-25 19:55:19 +08:00
Young-Flash
1c85234bcd
limit struct field hover display nums
2024-03-25 19:55:19 +08:00
Lukas Wirth
8e324e98a1
Rename ProcMacroKind::FuncLike to Bang
2024-03-22 11:20:56 +01:00
bors
16c8deeb86
Auto merge of #16835 - wyatt-herkamp:use_one_tt_for_a_derive, r=Veykril
...
Have Derive Attribute share a token tree with it's proc macros.
The goal of this PR is to stop creating a token tree for each derive proc macro.
This is done by giving the derive proc macros an id to its parent derive element.
From running the analysis stat on the rust analyzer project I did see a small memory decrease.
```
Inference: 42.80s, 362ginstr, 591mb
MIR lowering: 8.67s, 67ginstr, 291mb
Mir failed bodies: 18 (0%)
Data layouts: 85.81ms, 609minstr, 8mb
Failed data layouts: 135 (6%)
Const evaluation: 440.57ms, 5235minstr, 13mb
Failed const evals: 1 (0%)
Total: 64.16s, 552ginstr, 1731mb
```
After Change
```
Inference: 40.32s, 340ginstr, 593mb
MIR lowering: 7.95s, 62ginstr, 292mb
Mir failed bodies: 18 (0%)
Data layouts: 87.97ms, 591minstr, 8mb
Failed data layouts: 135 (6%)
Const evaluation: 433.38ms, 5226minstr, 14mb
Failed const evals: 1 (0%)
Total: 60.49s, 523ginstr, 1680mb
```
Currently this breaks the expansion for the actual derive attribute.
## TODO
- [x] Pick a better name for the function `smart_macro_arg`
2024-03-21 18:04:38 +00:00
Wyatt Herkamp
262e06f1ef
Remove MacroCallKind::DeriveAttr
2024-03-21 12:50:58 -04:00
Wyatt Herkamp
2c2bbe07fd
Treat Derive Macro specially.
2024-03-21 08:07:54 -04:00
Wyatt Herkamp
15d183be79
Initial Attempt limiting number of token tree in macro expansion.
2024-03-21 08:06:43 -04:00
Lukas Wirth
928d847cc2
Keep the span for Attr::Literal
2024-03-21 10:28:25 +01:00
Lukas Wirth
255a8aef92
Move Edition into span crate
2024-03-21 10:21:44 +01:00
bors
dc2e0b35cc
Auto merge of #16891 - goodmost:master, r=lnicola
...
chore: remove repetitive words
2024-03-21 06:29:33 +00:00
goodmost
d6b0aae019
chore: remove repetitive words
...
Signed-off-by: goodmost <zhaohaiyang@outlook.com>
2024-03-19 22:14:13 +08:00
Shoyu Vanilla
967a864d03
fix: Goto implementation to impls inside blocks
2024-03-19 22:04:48 +09:00
dfireBird
d6e3929841
include lifetime in ParamKind and in Generics::provenance_split
2024-03-18 17:18:08 +05:30
Matthias Krüger
2a8edaa14d
remove redundant clone()s
2024-03-17 14:06:21 +01:00
Lukas Wirth
d69a81fddb
fix: Fix wrong where clause rendering on hover
2024-03-16 17:49:59 +01:00
Lukas Wirth
0dd89d7ee7
Remove usages of SpanData where Span suffices
2024-03-15 13:02:40 +01:00
Lukas Wirth
d2f8eae2ec
feat: Support macro calls in eager macros for IDE features
2024-03-14 15:40:35 +01:00
Lukas Wirth
9ba4493918
internal: Improve rooted upmapping
2024-03-12 13:46:58 +01:00
bors
2f872156fe
Auto merge of #16808 - ShoyuVanilla:proc-macro-sem-token, r=Veykril
...
feat: Add proc macro semantic token type
Closes #11529
2024-03-11 13:20:29 +00:00
Shoyu Vanilla
fc11216ad5
feat: Add proc macro semantic token type
2024-03-11 22:14:59 +09:00
bors
2320e12541
Auto merge of #16771 - Veykril:self-param-split, r=Veykril
...
internal: Don't desugar self param into a pattern
Small experiment to see if this simplifies things
2024-03-11 12:45:46 +00:00
bors
a5035f4931
Auto merge of #16749 - Veykril:on-demand-validation-err, r=Veykril
...
internal: Some method resolution cleanups
2024-03-11 09:18:24 +00:00
Lukas Wirth
458f4a2960
internal: Treat the self param as different from patterns when lowering
2024-03-11 09:46:28 +01:00
Lukas Wirth
558feeab61
internal: Remove synstructure const hack support
2024-03-11 09:44:40 +01:00
Lukas Wirth
c04c0dd5ba
fix: Don't force draw a dependency edge to the real_span_map query
2024-03-07 14:14:59 +01:00