Jonas Schievink
85cc3cfec9
Revert "Proper handling $crate and local_inner_macros"
2021-01-03 11:47:57 +01:00
Edwin Cheng
26b9c793f1
Fixed nested eager macro bug
2021-01-03 17:56:59 +08:00
bors[bot]
a88d4f8c72
Merge #7133
...
7133: Proper handling $crate and local_inner_macros r=jonas-schievink a=edwin0cheng
This PR introduces `HygineFrames` to store the macro definition/call site hierarchy in hyginee and when resolving `local_inner_macros` and `$crate`, we use the token to look up the corresponding frame and return the correct value.
See also: https://rustc-dev-guide.rust-lang.org/macro-expansion.html#hygiene-and-hierarchies
fixe #6890 and #6788
r? @jonas-schievink
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-01-02 17:42:45 +00:00
bors[bot]
3b347eaa4e
Merge #7134
...
7134: Fix infer error of macro invocation in array expr r=edwin0cheng a=edwin0cheng
Fixed following infer error:
```rust
macro_rules! bar { () => {0u32} }
fn test() {
let a = [bar!()]; // a : [unknown]
}
```
bors r+
Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2021-01-02 14:16:26 +00:00
Edwin Cheng
63e330f402
Fix infer error of macro invocation in array expr
2021-01-02 22:06:59 +08:00
Edwin Cheng
fe5340d970
Introduce HygieneFrames for proper token hyginee
2021-01-02 20:39:57 +08:00
Florian Diebold
29acd39800
Don't emit arg count diagnostics for method calls with unknown receiver
...
Fixes #7098 .
2021-01-01 20:49:18 +01:00
bors[bot]
0e5fe47153
Merge #7080
...
7080: Implement ConstParams for HIR r=Veykril a=Veykril
r? @flodiebold
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-01-01 13:45:10 +00:00
Lukas Wirth
18bf2e5af5
Add ConstParams to the ide layer
2021-01-01 14:43:16 +01:00
Lukas Wirth
0acdb73076
Add ConstParams to the HIR
2021-01-01 10:06:42 +01:00
kjeremy
dc1396eec7
Update crates
2020-12-30 10:39:50 -05:00
Laurențiu Nicola
fbeccf0b9d
Allow spurious warning from rust-lang/rust#80501
2020-12-30 11:37:52 +02:00
bors[bot]
06320015af
Merge #7021
...
7021: Track labels in the HIR r=matklad a=Veykril
Groundwork for #6966
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-24 12:04:28 +00:00
Lukas Wirth
262b9c3982
Track labels in the HIR
2020-12-24 12:49:40 +01:00
bors[bot]
a82c2445be
Merge #7020
...
7020: Implement const pat and expr inference r=flodiebold a=Veykril
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-23 19:50:04 +00:00
Lukas Wirth
a142beaf01
Implement const block inference
2020-12-23 12:24:24 +01:00
Lukas Wirth
0a780c0ab3
Implement const pat inference
2020-12-23 12:15:38 +01:00
Laurențiu Nicola
c04406287a
Bump chalk
2020-12-23 12:58:23 +02:00
Lukas Wirth
fa65d6ba85
Higher-ranked trait bounds for where clauses
2020-12-17 22:01:42 +01:00
Jonas Schievink
6615fda695
decl_check: don't pass db
around so often
2020-12-17 01:19:56 +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
c1cb595382
Move to upstream macro_rules!
model
2020-12-15 15:37:37 +01:00
Edwin Cheng
9da1eee436
Add regression test
2020-12-15 15:24:35 +08:00
Florian Diebold
4788aaa5f0
Add test for #6852
2020-12-13 14:53:04 +01:00
bors[bot]
ca3a54f0a4
Merge #6852
...
6852: Ignore lifetime params in substitutions r=matklad a=Veykril
[`hir_ty::utils::Generics`](https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/utils.rs#L153 ) currently only assumes type parameters but not lifetime parameters and therefor creates incorrect index and length calculations, this PR just makes the use sites ignore LifetimeGenerics for now.
This fixes the panic at least locally for me for `analysis-stats`. Funnily enough this panic prevented me from using reference search for the `args` field to fix this problem.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-13 11:34:43 +00:00
Lukas Wirth
ae8a802085
Ignore lifetime params in substitutions
2020-12-13 11:34:44 +01:00
bors[bot]
a15d19619e
Merge #6845
...
6845: Don't HirDisplay unknown types when displaying for source r=Veykril a=Veykril
Was wondering why the add missing impl assist didn't do anything here:
![Code_JCA1Qo0V9P](https://user-images.githubusercontent.com/3757771/101990300-7af44a80-3ca6-11eb-8431-e5eb4de4e78c.png )
Turns out me forgetting to set the Index::Idx type in the trait causes RA to panic due to it trying to to create an unparsable type in the `make` module.
Now we get this instead which imo is definitely better to have.
![Code_MUFPJUCULY](https://user-images.githubusercontent.com/3757771/101990347-c9094e00-3ca6-11eb-9c6a-146bddf64b7c.png )
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-12 18:06:36 +00:00
Lukas Wirth
69b78edb5e
Don't HirDisplay unknown types when displaying for source
2020-12-12 19:05:00 +01:00
bors[bot]
479d1f7eec
Merge #6818
...
6818: Add Lifetimes to the HIR r=matklad a=Veykril
This doesn't handle resolve yet as I don't know yet how that will be used. I'll get to that once I start moving the lifetime reference PR to the hir.
This also adds a new `hir` name type for lifetimes and labels, `hir::LifetimeName`.
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-12-12 14:35:38 +00:00
ivan770
f7f4f366ac
Added remove this semicolon test
2020-12-12 13:50:11 +02:00
Lukas Wirth
11f8664182
Add Lifetimes to the HIR
2020-12-12 00:56:52 +01:00
Lukas Wirth
378ec2841b
Infer labeled blocks
2020-12-12 00:06:48 +01:00
bors[bot]
44978acf51
Merge #6769
...
6769: Add native "remove this semicolon" diagnostics r=matklad a=ivan770
Closes #6739
![demo2](https://user-images.githubusercontent.com/14003886/101530533-b76c3180-399a-11eb-9d18-5c8457721655.gif )
Co-authored-by: ivan770 <leshenko.ivan770@gmail.com>
2020-12-10 16:18:49 +00:00
ivan770
bbb0bc7b04
Cast to ExprStmt, style fixes
2020-12-10 18:10:39 +02:00
Jonas Schievink
05d4a5a150
Use mark/hit
2020-12-10 15:56:04 +01:00
Jonas Schievink
d82292e1ce
Ignore extern items in incorrect-case check
2020-12-10 15:45:01 +01:00
Jonas Schievink
dedd888570
Implement HirDisplay for FnSig
...
This could be useful for diagnostics, but isn't used right now
2020-12-09 18:06:56 +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
ivan770
35006eba79
Apply rustfmt changes
2020-12-09 08:22:13 +00:00
ivan770
86c183716c
Apply suggestions from code review
...
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-12-09 10:17:28 +02:00
ivan770
7738467e0a
Format code
2020-12-08 19:25:21 +00:00
ivan770
581567a4c8
Remove use via super
2020-12-08 20:50:13 +02:00
ivan770
cb66bb8ff9
Remove this semicolon
2020-12-08 20:47:20 +02:00
Florian Diebold
78dd548243
Upgrade Chalk
...
Also make overflow depth and max type size configurable through env variables.
This can be helpful at least for debugging.
Fixes #6628 .
2020-12-07 11:48:58 +01:00
Florian Diebold
e5fd550dfd
Use correct, full substs for self type in impl
...
Without arbitrary self types, the self type could never refer to the method type
parameters, so this wasn't a problem; but with arbitrary self types, it can.
This fixes the crash from #6668 ; but it doesn't make method resolution work for
these methods.
2020-12-04 18:43:47 +01:00
Lukas Wirth
377fa7db3f
Check structs for match exhaustiveness
2020-11-24 18:50:56 +01:00
Lukas Wirth
4d841dc4e7
Add middle ellipsis missing arm text
2020-11-24 16:46:06 +01:00
Lukas Wirth
a4b5275656
Handle ellipsis in tuple patterns in match exhaustiveness checking
2020-11-24 16:43:28 +01:00
Lukas Wirth
a5efefd3d7
Properly infer tuple struct patterns when encountering ellipsis
2020-11-24 16:11:40 +01:00
Lukas Wirth
35dd62e915
Properly infer tuple patterns when encountering ellipsis
2020-11-24 13:56:20 +01:00
Aleksey Kladov
731f7bfc02
Replace RacyFlag with OnceCell
2020-11-11 03:11:40 +01:00
Igor Aleksanov
dd2febf05a
Improve decl_check module readability
2020-11-03 10:13:49 +03:00
Igor Aleksanov
9e172ffeb7
Remove numbers from comments in decl_check.rs
2020-11-03 10:11:02 +03:00
Igor Aleksanov
bdfe12df8f
Check for allow(..) attributes for case diagnostic
2020-11-03 10:11:02 +03:00
kjeremy
0403e82d91
Bump chalk and lexer
2020-11-02 12:00:58 -05:00
Aleksey Kladov
ba8d6d1e4e
Remove more unreachable pubs
2020-11-02 16:58:33 +01:00
Aleksey Kladov
b610118453
Deny unreachable-pub
...
It's very useful when `pub` is equivalent to "this is crate's public
API", let's enforce this!
Ideally, we should enforce it for local `cargo test`, and only during
CI, but that needs https://github.com/rust-lang/cargo/issues/5034 .
2020-11-02 14:07:08 +01:00
Florian Diebold
bca51e3519
Upgrade Chalk to 0.36
...
Quite a few changes, because Chalk got rid of the `ApplicationTy` nesting.
2020-10-30 18:57:55 +01:00
Benjamin Coenen
7322a69cf6
refactor(hir_ty): do not override DisplayTarget in hir_fmt
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-28 17:58:16 +01:00
Benjamin Coenen
ec3638adb9
do not use associated types placeholder for inlay hint
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-28 15:42:51 +01:00
Benjamin Coenen
0aca7b78de
do not use associated types placeholder for inlay hint
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-28 15:23:23 +01:00
Benjamin Coenen
ef2f7bb243
do not use associated types placeholder for inlay hint
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-28 14:07:12 +01:00
Benjamin Coenen
8762b797fd
do not use associated types placeholder for inlay hint
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-28 11:20:05 +01:00
Benjamin Coenen
73161cc9cd
do not use associated types placeholder for inlay hint #6191
...
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-10-27 20:23:09 +01:00
GrayJack
08e95a5dc1
Fix case where non FnOnce variables is marked callable
2020-10-26 15:20:33 -03:00
bors[bot]
29f5154d1c
Merge #6350
...
6350: Make IncorrectDiagnostic match rustc by copying rustc's code. r=popzxc a=ArifRoktim
This closes #6343 and closes #6345 .
The old algorithm which used a `DetectedCase` enum, didn't match how rustc thinks of cases. Some inputs can be interpreted as more than 1 case depending on the situation. For example, to rustc:
- `ABCD`: Can be both camel case and upper snake case
- `X86_64`: Can be both camel case and upper snake case
I could've made `detect_case` return a collection of `DetectedCase` and then modified the other code as such, but I think using the same code rustc uses is simpler and a surefire way to achieve the same diagnostics as rustc.
Co-authored-by: Arif Roktim <arifrroktim@gmail.com>
2020-10-26 13:20:57 +00:00
Florian Diebold
39dfca23f1
Add tracing to main rust-analyzer binary
2020-10-25 13:53:38 +01:00
Florian Diebold
6b5f82bcea
Get rid of FAKE_PLACEHOLDER
...
The lifetime placeholder can be replaced by the static lifetime, and for array
sizes we should just be using a concrete const.
2020-10-25 12:42:38 +01:00
Arif Roktim
afb2166aeb
Make IncorrectDiagnostic match rustc by copying rustc's code.
2020-10-24 19:21:53 -04:00
Laurențiu Nicola
c81d044622
Bump chalk
2020-10-24 17:14:05 +03:00
Florian Diebold
baeb16e83f
Improve Chalk debugging
...
- add panic context for the trait goal if CHALK_DEBUG is set
- print the Chalk program even if we're panicking
- log goal/solution while TLS is still set
2020-10-23 15:28:02 +02:00
bors[bot]
31db677a94
Merge #6319
...
6319: Properly identify camel cased acronyms as UpperCamelCase r=popzxc a=ArifRoktim
This closes #6305 .
Co-authored-by: Arif Roktim <arifrroktim@gmail.com>
2020-10-22 14:24:10 +00:00
Arif Roktim
854b133181
Properly identify camel cased acronyms as UpperCamelCase
2020-10-21 17:10:22 -04:00
bors[bot]
9eb6cbb80b
Merge #6307
...
6307: Add whitelist of safe intrinsics r=frazar a=frazar
This PR should fix #5996 , where intrinsic operations where all marked as unsafe.
I'm rather new to this codebase, so I might be doing something *very* wrong. Please forgive me!
In particular, I'm not sure how to "check that we are in extern `rust-intrinsics`" as mentioned [in this comment](https://github.com/rust-analyzer/rust-analyzer/issues/5996#issuecomment-709234802 ).
Co-authored-by: Francesco Zardi <frazar@users.noreply.github.com>
2020-10-21 20:09:11 +00:00
Francesco Zardi
0be21b05d6
Move safe intrinsic tests
2020-10-21 21:53:05 +02:00
Igor Aleksanov
2a20e7795c
Add descriptions for diagnostics parseable by xtask
2020-10-19 20:55:16 +03:00
Roland Ruckerbauer
0e9d1e17d6
binary operator overload type inference: add test mark
2020-10-14 19:00:04 +02:00
Roland Ruckerbauer
4e49b2f731
Implement binary operator overloading type inference
2020-10-13 20:48:08 +02:00
Igor Aleksanov
fb0ab9f745
Keep SyntaxNodePtr::range private
2020-10-12 11:05:00 +03:00
Igor Aleksanov
66cea8cbaa
Replace 'if let' with 'match' in decl_check.rs
2020-10-12 11:05:00 +03:00
Igor Aleksanov
559cc97073
Add to_upper_snake_case function to stdx
2020-10-12 11:05:00 +03:00
Igor Aleksanov
ebd30033b3
Fix compilation error
2020-10-12 11:05:00 +03:00
Igor Aleksanov
f2c91fc5a8
Apply suggestions from code review
...
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2020-10-12 11:05:00 +03:00
Igor Aleksanov
9ea57cac0e
Fix code style issues
2020-10-12 11:05:00 +03:00
Igor Aleksanov
2a72f876d6
Fix issues with match arm bindings
2020-10-12 11:05:00 +03:00
Igor Aleksanov
45ac2b2ede
Code style adjustments
2020-10-12 11:05:00 +03:00
Igor Aleksanov
b42562b5de
Make incorrect case diagnostic work inside of functions
2020-10-12 11:05:00 +03:00
Igor Aleksanov
9ec1741b65
Refactor string helpers for decl_check module
2020-10-12 11:05:00 +03:00
Igor Aleksanov
fb96bba878
Add diagnostics for enum names and variants
2020-10-12 11:05:00 +03:00
Igor Aleksanov
e24e22f288
Add fix for incorrect case diagnostic
2020-10-12 11:04:59 +03:00
Igor Aleksanov
17f1026c46
Improve string helpers functions
2020-10-12 10:59:54 +03:00
Igor Aleksanov
21dd704b6b
Check structure fields to be snake_case
2020-10-12 10:59:54 +03:00
Igor Aleksanov
329626124f
Add check for structure names to be CamelCase
2020-10-12 10:59:54 +03:00
Igor Aleksanov
1773c6d154
Extract helper functions into a separate module
2020-10-12 10:59:54 +03:00
Igor Aleksanov
f5cea35986
Add checks for function parameters
2020-10-12 10:59:54 +03:00
Igor Aleksanov
4039176ec6
Create basic support for names case checks and implement function name case check
2020-10-12 10:59:54 +03:00
kjeremy
a7d6674e4d
Update crates
2020-10-11 18:01:50 -04:00
Casey Primozic
37df2138ec
Switch from git to latest tagged release of chalk deps
2020-10-07 12:11:22 -07:00
Casey Primozic
13bdadb515
Make unimplemented match variants explicit
2020-10-06 23:56:31 -07:00
Casey Primozic
f40e86e141
todo!()
-> unimplemented!() // FIXME
for CI
2020-10-06 15:19:34 -07:00