Lukas Wirth
f74a0c8801
asm! parsing and lowering fixes
2024-09-05 15:08:16 +02:00
bors
d927daff38
Auto merge of #18022 - Veykril:asm-parse, r=Veykril
...
feat: IDE support for `asm!` expressions
Fixes https://github.com/rust-lang/rust-analyzer/issues/10461 , Fixes https://github.com/rust-lang/rust-analyzer/issues/6031 Progresses https://github.com/rust-lang/rust-analyzer/issues/11621
Notably this only works for asm expressions not items yet. Most IDE features work, mainly completions need extra logic still.
2024-09-05 11:50:34 +00:00
Lukas Wirth
c075a9980e
Fix name fetching being incorrect for asm operands
2024-09-05 13:41:03 +02:00
Lukas Wirth
564926ac99
Add missing doc comments
2024-09-05 13:19:32 +02:00
Lukas Wirth
95d8d8e697
Support more IDE features for asm operands
2024-09-05 13:19:02 +02:00
Lukas Wirth
811905fce8
Give InlineAsmOperand a HIR representation
2024-09-05 12:40:48 +02:00
Lukas Wirth
a600e1df73
Add Definition kind for asm register operand
2024-09-05 10:53:07 +02:00
Lukas Wirth
164b15bc62
Add Definition kind for asm register classes
2024-09-05 10:23:00 +02:00
Lukas Wirth
3b11ff8c4d
Lower asm expressions
2024-09-05 09:59:08 +02:00
coekjan
0b9d2725ae
fix: Fix inline_const_as_literal
error when the number >= 10
2024-09-05 14:26:21 +08:00
David Barsky
9d74b5f264
assist: ensure replace_qualified_name_with_use applies to the first path segment
2024-09-04 12:15:28 -04:00
Lukas Wirth
86658c66b4
Parse builtin#asm expressions
2024-09-04 14:09:03 +02:00
bors
50882fbfa2
Auto merge of #18045 - Veykril:fix-loop-lower, r=Veykril
...
fix: Fix lowering of for loops dropping the loop block
2024-09-04 10:03:39 +00:00
Lukas Wirth
fbca403ebe
fix: Fix lowering of for loops dropping the loop
block
2024-09-04 12:00:16 +02:00
bors
a3f302ec4c
Auto merge of #18044 - Veykril:highlight-kw-test, r=Veykril
...
internal: Add edition dependent keyword highlighting tests
2024-09-04 09:49:17 +00:00
Lukas Wirth
230cd21bed
Add edition dependent keyword highlighting tests
2024-09-04 11:32:59 +02:00
bors
0ff282bbd3
Auto merge of #129356 - nikic:llvm19-host, r=Mark-Simulacrum
...
Update x86_64-linux host compiler to LLVM 19 rc 3
2024-09-04 02:55:57 +00:00
Nadrieril
c304e9b817
Add an internal lint that warns when accessing untracked data
2024-09-03 19:14:19 +02:00
DropDemBits
12c62662aa
bundle old root into SyntaxEdit
result
...
useful for `SourceChangeBuilder` so it can still perform a tree diff without having to store the old root separately
2024-09-03 11:20:23 -04:00
bors
b10dd83c2e
Auto merge of #18036 - Veykril:smol_str, r=Veykril
...
Bump `smol_str`
2024-09-03 09:59:33 +00:00
Lukas Wirth
e517b84d98
Bump smol_str
2024-09-03 11:54:33 +02:00
bors
6e8445139b
Auto merge of #17984 - ShoyuVanilla:cast, r=Veykril
...
feat: Implement cast typecheck and diagnostics
Fixes #17897 and fixes #16564
Mainly adopted from 100fde5246/compiler/rustc_hir_typeck/src/cast.rs
2024-09-03 06:00:10 +00:00
bors
1fddb11f0f
Auto merge of #18031 - roife:suggest-name-in-completion, r=Veykril
...
feat: Suggest name in completion for let_stmt and fn_param
fix #17780
1. Refactor: move `ide_assist::utils::suggest_name` to `ide-db::syntax_helpers::suggest_name` for reuse.
2. When completing `IdentPat`, detecte if the current node is a `let_stmt` or `fn_param`, and suggesting a new name based on the context.
2024-09-03 05:45:53 +00:00
DropDemBits
69e8393963
misc fixes
2024-09-02 22:53:54 -04:00
DropDemBits
d929121f7b
handle replace_with_many and replace_all
2024-09-02 22:27:14 -04:00
DropDemBits
41dbaa415a
support replacing root node
2024-09-02 21:42:08 -04:00
DropDemBits
b565d8db74
properly sort changes by depth to sort between nodes that have the same start range
2024-09-02 21:34:00 -04:00
DropDemBits
5fe518361e
fix insert ranges not being excluded from disjointness
2024-09-02 20:45:57 -04:00
DropDemBits
21bb04d3a6
support insert{_all}
2024-09-02 19:11:39 -04:00
DropDemBits
3440408087
propagate annotations to mapped elements
2024-09-02 18:24:47 -04:00
roife
35ed65a513
tests: suggesting names in completions for let_stmt and fn_param
2024-09-03 05:23:04 +08:00
roife
492e66ceab
feat: suggest name in let_stmt and fn_param
2024-09-03 05:22:55 +08:00
roife
b207e5781e
refactor: move ide_assist::utils::suggest_name to ide-db
2024-09-03 05:21:05 +08:00
Shoyu Vanilla
d186bdc617
feat: Implement cast typechecks
2024-09-03 04:11:36 +09:00
bors
304e5f58cd
Auto merge of #18029 - lnicola:minor-stuff, r=lnicola
...
minor: fix two nits
2024-09-02 17:07:43 +00:00
Laurențiu Nicola
98cc4b6115
Merge some strings
2024-09-02 20:05:35 +03:00
Laurențiu Nicola
d398b8f3f9
Avoid Option::is_none_or for a while
2024-09-02 20:04:35 +03:00
bors
0e21dbf212
Auto merge of #129317 - compiler-errors:expectation-subtyping, r=lcnr
...
Use equality when relating formal and expected type in arg checking
#129059 uncovered an interesting issue in argument checking. When we check arguments, we create three sets of types:
* Formals
* Expected
* Actuals
The **actuals** are the types of the argument expressions themselves. The **formals** are the types from the signature that we're checking. The **expected** types are the formal types, but passed through `expected_inputs_for_expected_outputs`:
a971212545/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs (L691-L725)
This method attempts to constrain the formal inputs by relating the [expectation](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_hir_typeck/expectation/enum.Expectation.html ) of the call expression and the formal output.
When we check an argument, we get the expression's actual type, and then we first attempt to coerce it to the expected type:
a971212545/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs (L280-L293)
Then we subtype the expected type and the formal type:
a971212545/compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs (L299-L305)
However, since we are now recording the right coercion target (since #129059 ), we now end up recording the expected type to the typeck results, rather than the actual.
Since that expected type was [fudged](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_infer/infer/struct.InferCtxt.html#method.fudge_inference_if_ok ), it has fresh variables. And since the expected type is only subtyped against the formal type, if that expected type has a bivariant parameter, it will likely remain unconstrained since `Covariant * Bivariant = Bivariant` according to [xform](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_middle/ty/enum.Variance.html#method.xform ). This leads to an unconstrained type variable in writeback.
AFAICT, there's no reason for us to be using subtyping here, though. The expected output is already related to the expectation by subtyping:
a971212545/compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs (L713)
So the formals don't need "another" indirection of subtyping in the argument checking... So I've changed it to use equality here. We could alternatively fix this by requiring WF for all the expected types to constrain their bivariant parameters, but this seems a bit overkill.
Fixes #129286
2024-09-02 16:08:50 +00:00
bors
5461f494e6
Auto merge of #18028 - Veykril:lifetime-hints-panic, r=Veykril
...
fix: lifetime hint panic in non generic defs
2024-09-02 16:05:36 +00:00
Lukas Wirth
134e0a4e87
fix: lifetime hint panic in non generic defs
2024-09-02 18:04:21 +02:00
bors
d534cc63d3
Auto merge of #18016 - IvarWithoutBones:wrap-return-ty-local-result, r=Veykril
...
fix: use Result type aliases in "Wrap return type in Result" assist
This commit makes the "Wrap return type in Result" assist prefer type aliases of standard library type when the are in scope, use at least one generic parameter, and have the name `Result`.
The last restriction was made in an attempt to avoid false assumptions about which type the user is referring to, but that might be overly strict. We could also do something like this, in order of priority:
* Use the alias named "Result".
* Use any alias if only a single one is in scope, otherwise:
* Use the standard library type.
This is easy to add if others feel differently that is appropriate, just let me know.
Fixes #17796
2024-09-02 11:33:44 +00:00
bors
6341e88daa
Auto merge of #18026 - Veykril:completions, r=Veykril
...
internal: Adjust completions scoring
2024-09-02 11:19:33 +00:00
Lukas Wirth
8c59bbe916
Adjust completions scoring
2024-09-02 13:17:52 +02:00
Lukas Wirth
26cd745104
Simplify CompletionRelevance
2024-09-02 13:17:49 +02:00
bors
21b7608fd7
Auto merge of #18025 - cuishuang:master, r=lnicola
...
minor: remove repetitive words
2024-09-02 10:48:27 +00:00
cuishuang
680de15ec3
chore: fix some comments
...
Signed-off-by: cuishuang <imcusg@gmail.com>
2024-09-02 18:33:23 +08:00
bors
b7d73ea445
Auto merge of #129798 - weihanglo:update-cargo, r=weihanglo
...
Update cargo
9 commits in 8f40fc59fb0c8df91c97405785197f3c630304ea..c1fa840a85eca53818895901a53fae34247448b2
2024-08-21 22:37:06 +0000 to 2024-08-29 21:03:53 +0000
- fix(resolve): With `latest` message, differentiate actionable updates (rust-lang/cargo#14461 )
- fix(pkgid): Allow open namespaces in PackageIdSpec's (rust-lang/cargo#14467 )
- feat(resolve): Report incompatible-with-rustc when MSRV-resolver is disabled (rust-lang/cargo#14459 )
- fix(resolve): Report incompatible packages with precise Rust version (rust-lang/cargo#14457 )
- fix(resolve): Dont show locking workspace members (rust-lang/cargo#14445 )
- Log details of failure if no errors were seen (rust-lang/cargo#14453 )
- More helpful missing feature error message (rust-lang/cargo#14436 )
- feat: Add matches_prerelease semantic (rust-lang/cargo#14305 )
- refactor(update): Prepare for smarter update messages (rust-lang/cargo#14440 )
r? ghost
2024-09-02 05:13:21 +00:00
DropDemBits
db649195e9
handle merging two syntax editors together
2024-09-02 00:09:30 -04:00
DropDemBits
883e429179
elaborate SyntaxEdit comments
2024-09-02 00:02:32 -04:00
DropDemBits
ad9595d729
wip: new syntax tree editor
2024-09-02 00:02:32 -04:00