about summary refs log tree commit diff
path: root/src/tools/rust-analyzer
AgeCommit message (Collapse)AuthorLines
2024-10-25Add server cancellation support to pull diagnostic handlerLukas Wirth-14/+45
2024-10-25Don't compute diagnostics for non local filesLukas Wirth-10/+16
2024-10-25Shrink `TypeRef` from 16 from 32 bytesChayim Refael Friedman-149/+178
Only references and arrays need to be boxed, and they comprise only 9.4% of the types (according to counting on r-a's code). This saves 17mb.
2024-10-25Shrink `Path` to 16 bytesChayim Refael Friedman-107/+596
Thanks to the observation (supported by counting) that the vast majority paths have neither generics no type anchors, and thanks to a new datastructure `ThinVecWithHeader` that is essentially `(T, Box<[U]>)` but with the size of a single pointer, we are able to reach this feat. This (together with `ThinVecWithHeader`) makes the possibility to shrink `TypeRef`, because most types are paths.
2024-10-24editors/code: Add md for walkthrough setup exampleHackerVole-4/+14
Add a separate markdown file containing the settings.json snippet from the "Useful Setup Tips". This fixes the rendering and also makes the text selectable. Also use double-backticks for `code` rendering.
2024-10-25Do not allocate attributes entry if there are no attributesChayim Refael Friedman-6/+13
This saves 8mb.
2024-10-25Shrink `ItemTreeSourceMaps`Chayim Refael Friedman-73/+155
This saves 16mb on `analysis-stats .`.
2024-10-25Reuse empty `GenericParams`Chayim Refael Friedman-6/+19
This saves back 15mb that went for typeref source maps.
2024-10-25Fix memory usage calculation's queries listChayim Refael Friedman-21/+49
2024-10-25Build source map for `hir_def::TypeRef`sChayim Refael Friedman-778/+1712
So that given a `TypeRef` we will be able to trace it back to source code. This is necessary to be able to provide diagnostics for lowering to chalk tys, since the input to that is `TypeRef`. This means that `TypeRef`s now have an identity, which means storing them in arena and not interning them, which is an unfortunate (but necessary) loss but also a pretty massive change. Luckily, because of the separation layer we have for IDE and HIR, this change never crosses the IDE boundary.
2024-10-24Rework `generate_fn_type_alias`Giga Bowser-55/+43
2024-10-24Add `ty_fn_ptr` function to create function pointer typeGiga Bowser-1/+41
2024-10-24Update changelog generation for merge queuesLaurențiu Nicola-2/+3
2024-10-24Merge pull request #18404 from Veykril/veykril/push-swpmkoqqxrvuLukas Wirth-18/+150
feat: Implement diagnostics pull model
2024-10-24feat: Implement diagnostics pull modelLukas Wirth-18/+150
2024-10-24Merge pull request #18402 from Veykril/veykril/push-wrvtystlszlrLukas Wirth-10/+13
internal: Improve proc-macro error msg for failed build scripts
2024-10-24Merge pull request #18401 from Veykril/veykril/push-ulpowvsymyysLukas Wirth-3/+2
minor: Remove intermediate allocations
2024-10-24internal: Improve proc-macro error msg for failed build scriptsLukas Wirth-10/+13
2024-10-24minor: Remove intermediate allocationsLukas Wirth-3/+2
2024-10-24fix: handle aliased pattern and simplify testcaseKhanh Duong Quoc-23/+32
2024-10-24refactor: separate function for getting import nameKhanh Duong Quoc-7/+19
2024-10-24Merge pull request #18399 from Veykril/veykril/push-nnsoxqrwqkmvLukas Wirth-1/+3
Fix diagnostic enable config being ignored
2024-10-24Fix diagnostic enable config being ignoredLukas Wirth-1/+3
2024-10-24Merge pull request #18390 from ShoyuVanilla/issue-18308Lukas Wirth-9/+98
fix: Prevent public re-export of private item
2024-10-24Bump smol_strLaurențiu Nicola-3/+3
2024-10-24Hide default config in Debug implLaurențiu Nicola-1/+21
2024-10-24Merge pull request #18395 from Wilfred/missing_cfg_for_coreLukas Wirth-3/+4
fix: Add missing cfg flags for `core` crate
2024-10-24Merge pull request #18394 from Wilfred/pretty_print_statusLukas Wirth-1/+1
internal: Pretty-print Config in status command
2024-10-23fix: Add missing cfg flags for `core` crateWilfred Hughes-3/+4
Some types in `core` are conditionally compiled based on `target_has_atomic` or `target_has_atomic_load_store` without an argument, for example `AtomicU64`. This is less noticeable in Cargo projects, where rust-analyzer adds the output `RUSTC_BOOTSTRAP=1 cargo rustc --print cfg` so it gets the full set of cfg flags. This fixes go-to-definition on `std::sync::atomic::AtomicU64` in non-cargo projects.
2024-10-23internal: Pretty-print Config in status commandWilfred Hughes-1/+1
Config can become very big, even for relatively small rust project, and printing everything on one line makes reading the output in VS Code harder.
2024-10-23Merge pull request #18392 from Veykril/veykril/push-wktpkuklnzotLukas Wirth-2/+1
Swap query call order in `file_item_tree_query`
2024-10-23Swap query call order in file_item_tree_queryLukas Wirth-2/+1
2024-10-23internal: log original syntax on panicDavid Barsky-1/+2
2024-10-24fix: Prevent public reexport of private itemShoyu Vanilla-9/+98
2024-10-23Rewrite `label_details_support` condition to be consistent with other parts ↵Jason Boatman-4/+1
of the codebase.
2024-10-23Fix checking for `false` `labelDetailsSupport` value.Jason Boatman-1/+2
2024-10-23fix: Handle missing time offsets gracefullyWilfred Hughes-6/+14
The tracing_subscribe docs state that missing offsets likely mean that we're in a multithreaded context: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/time/struct.OffsetTime.html#method.local_rfc_3339 We're not in a multithreaded context at this point, but some platforms (e.g. OpenBSD) still don't have time offsets available. Since this is only a rust-analyzer debugging convenience, just use system time logging in this situation. Fixes #18384
2024-10-23Fix alphabetical order of handlersGiga Bowser-2/+2
No idea how this slipped past me
2024-10-23Add assist to generate a type alias for a functionGiga Bowser-0/+474
2024-10-23fix: auto-complete import for aliased function and moduleKhanh Duong Quoc-2/+50
2024-10-23Merge pull request #18264 from ChayimFriedman2/semi-transparentLukas Wirth-164/+671
fix: Implement mixed site hygiene
2024-10-23fix dyn incompatible hint messageusamoi-1/+1
2024-10-23Merge pull request #18376 from Veykril/veykril/push-ptmnsoqzsmqkLukas Wirth-63/+93
feat: Add text edits to more inlay hints
2024-10-23Don't emit edits for postfix adjustment hintsLukas Wirth-23/+28
2024-10-23Add text edit to implicit 'static hintsLukas Wirth-1/+2
2024-10-23Add text edit to discriminant hintsLukas Wirth-5/+6
2024-10-23Add text edit to binding mode hintsLukas Wirth-36/+38
2024-10-23Add text edit to adjustment hintsLukas Wirth-21/+42
2024-10-22Correctly resolve variables and labels from before macro definition in macro ↵Chayim Refael Friedman-50/+287
expansion E.g.: ```rust let v; macro_rules! m { () => { v }; } ``` This was an existing bug, but it was less severe because unless the variable was shadowed it would be correctly resolved. With hygiene however, without this fix the variable is never resolved.
2024-10-22Implement semitransparent hygieneChayim Refael Friedman-124/+394
Or macro_rules hygiene, or mixed site hygiene. In other words, hygiene for variables and labels but not items. The realization that made me implement this was that while "full" hygiene (aka. def site hygiene) is really hard for us to implement, and will likely involve intrusive changes and performance losses, since every `Name` will have to carry hygiene, mixed site hygiene is very local: it applies only to bodies, and we very well can save it in a side map with minor losses. This fixes one diagnostic in r-a that was about `izip!()` using hygiene (yay!) but it introduces a huge number of others, because of #18262. Up until now this issue wasn't a major problem because it only affected few cases, but with hygiene identifiers referred by macros like that are not resolved at all. The next commit will fix that.