Jonas Schievink
cb63b021ff
Implement LUB coercion of array elements
2021-07-07 22:50:20 +02:00
bors[bot]
16871f6f93
Merge #9428
...
9428: fix: Fix deduction of `dyn Fn` closure parameter types r=flodiebold a=jonas-schievink
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-07-02 12:49:34 +00:00
Jonas Schievink
88a86d4ff9
Fix deduction of dyn Fn
closure parameter types
2021-06-30 15:04:04 +02:00
Lukas Wirth
af739731db
Implement TypeRef::ForLifetime
2021-06-30 01:34:54 +02:00
Florian Diebold
a1120b6879
Fix benchmark_include_macro
2021-06-20 19:37:45 +02:00
Florian Diebold
78419779f1
More cleanups, use check
for display_source_code
tests
2021-06-20 19:12:06 +02:00
Florian Diebold
0219b145ea
Clean up coercion tests
2021-06-20 19:12:06 +02:00
Florian Diebold
04fbdce426
Unify check_mismatches and check_types
2021-06-20 19:12:06 +02:00
Aleksey Kladov
89a0e58393
internal: use minicore deref more
2021-06-18 22:47:02 +03:00
Aleksey Kladov
991919e71f
internal: add index to minicore
2021-06-18 22:37:34 +03:00
Aleksey Kladov
73b3ee664e
minor: use minicore
2021-06-18 22:25:35 +03:00
Aleksey Kladov
ee7b649d44
internal: switch some tests to minicore
2021-06-16 22:54:57 +03:00
Aleksey Kladov
604267088c
internal: add iterator to minicore
2021-06-16 22:48:48 +03:00
Aleksey Kladov
8a4d9bb80a
internal: add fn to minicore
2021-06-16 12:15:45 +03:00
Aleksey Kladov
0798cce9e5
internal: add result to minicore
2021-06-15 23:07:25 +03:00
Aleksey Kladov
2870d2bade
internal: add option to minicore
2021-06-15 22:59:51 +03:00
Aleksey Kladov
3efe5c3426
internal: add future to minicore
2021-06-15 22:49:00 +03:00
Aleksey Kladov
09c4013ec0
internal: switch some tests to minicore
2021-06-15 22:02:29 +03:00
Aleksey Kladov
ee13e895e3
internal: switch some tests to minicore
2021-06-15 21:57:56 +03:00
Aleksey Kladov
0bb1f1bc90
internal: add ranges to minicore
2021-06-15 21:45:25 +03:00
Aleksey Kladov
f4b52682da
internal: unindent some tests
2021-06-15 21:39:44 +03:00
Aleksey Kladov
b737b894cb
internal: switch some tests to minicore
2021-06-15 21:36:50 +03:00
Aleksey Kladov
7ebac5e54c
internal: switch some tests to minicore
2021-06-15 21:34:26 +03:00
Aleksey Kladov
0475201538
internal: switch some tests to minicore
2021-06-15 21:19:51 +03:00
Aleksey Kladov
f841369fee
internal: switch some tests to minicore
2021-06-15 21:11:53 +03:00
Aleksey Kladov
f521e41853
internal: introduce minicore -- a subset of libcore for testing
2021-06-15 21:03:08 +03:00
Aleksey Kladov
3f4ad44082
internal: document that we don't #[ignore] tests
2021-06-15 11:46:47 +03:00
Florian Diebold
5ca71a1990
Make block-local trait impls work
...
As long as either the trait or the implementing type are defined in the
same block.
2021-06-13 13:00:34 +02:00
Florian Diebold
20487a1b4a
Fix coercion in match with expected type
...
Plus add infrastructure to test type mismatches without expect.
2021-06-12 23:04:43 +02:00
bors[bot]
c7eb19ebf9
Merge #9104
...
9104: Implement `#[rustc_skip_array_during_method_dispatch]` r=flodiebold a=jonas-schievink
haxx run the world
Closes https://github.com/rust-analyzer/rust-analyzer/issues/8552
Part of https://github.com/rust-analyzer/rust-analyzer/issues/9056
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-06-03 11:52:15 +00:00
Lukas Wirth
ded4e7cc83
Fix bind patterns always being treated as ref taking patterns
2021-06-02 20:00:39 +02:00
Jonas Schievink
955064b6aa
Implement #[rustc_skip_array_during_method_dispatch]
2021-06-01 21:34:08 +02:00
Jonas Schievink
f96c1a0414
Implement per-edition preludes
2021-06-01 13:39:19 +02:00
cynecx
759cb07891
hir_ty: use correct receiver_ty in method resolution
2021-05-31 20:26:38 +02:00
cynecx
51cbcc5346
hir_ty: don't pass where clauses of associated types down to chalk (temp. fix #9052 )
2021-05-30 19:21:08 +02:00
cynecx
54d60fdee9
hir_ty: use async ret type for inference inside async bodies
2021-05-29 18:17:45 +02:00
Jonas Schievink
31588aea04
Remove fragment kind knowledge from builtin macros
2021-05-29 17:17:08 +02:00
Jonas Schievink
26b4777e1f
Move hir_ty incremental test to its own file
2021-05-27 20:21:52 +02:00
Lukas Wirth
28ca371755
Consider trait to be in scope for trait-impl
2021-05-25 16:16:29 +02:00
bors[bot]
33fdd512e3
Merge #8987
...
8987: Fix lowering of FnOnce() without return type r=flodiebold a=flodiebold
This should result in an implicit `-> ()`, not leaving out the binding.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-05-25 13:25:15 +00:00
Florian Diebold
7c6f764ad6
Hide -> ()
in Fn traits
2021-05-25 15:23:52 +02:00
Lukas Wirth
3ee4e6c54c
Fix type inference not working for new Try trait
2021-05-25 14:59:54 +02:00
Florian Diebold
35c948ff4a
Fix lowering of FnOnce() without return type
...
This should result in an implicit `-> ()`, not leaving out the binding.
2021-05-25 14:29:53 +02:00
Florian Diebold
c33ee36d2a
Minor test fixes / new tests
2021-05-25 13:07:18 +02:00
Florian Diebold
b26a472ccb
Fix type mismatch caused by macros
...
MacroStmts should be completely transparent, but it prevented
coercion. (I should maybe give `infer_expr` and `infer_expr_inner`
better names.)
2021-05-25 11:15:02 +02:00
Florian Diebold
e9d1550001
Fix test after rebase
2021-05-21 18:23:03 +02:00
Florian Diebold
9716c0b949
Deal with goals arising from unification
2021-05-21 17:49:09 +02:00
Florian Diebold
4bd446f5b3
Get rid of resolve_ty_as_possible
...
Instead use shallow resolving where necessary.
2021-05-21 17:49:07 +02:00
Florian Diebold
32fc944263
Fix handling of diverging branches in match coercion
...
Fixes #7626 .
2021-05-21 17:48:34 +02:00
Florian Diebold
a09079f27a
Fix coercion of two closures to a function pointer
...
Fixes #8604 .
2021-05-21 17:48:34 +02:00
Florian Diebold
afa6be2435
Update tests with expected changes
2021-05-21 17:48:34 +02:00
Dawer
472317c008
internal: Record mismatches of pattern types.
2021-05-19 11:08:59 +05:00
bors[bot]
a57bd59f35
Merge #8813
...
8813: Get some more array lengths! r=lf- a=lf-
This is built on #8799 and thus contains its changes. I'll rebase it onto master when that one gets merged. It adds support for r-a understanding the length of:
* `let a: [u8; 2] = ...`
* `let a = b"aaa"`
* `let a = [0u8; 4]`
I have added support for getting the values of byte strings, which was not previously there. I am least confident in the correctness of this part and it probably needs some more tests, as we currently have only one test that exercised that part (!).
Fixes #2922 .
Co-authored-by: Jade <software@lfcode.ca>
2021-05-16 01:53:12 +00:00
Dawer
2abb4c99fe
Fix false positive "Missing match arm".
2021-05-15 00:18:59 +05:00
Jade
78d6b88f21
Add more tests, refactor array lengths/consteval work
...
Fix #2922 : add unknown length as a condition for a type having unknown.
Incorporate reviews:
* Extract some of the const evaluation workings into functions
* Add fixmes on the hacks
* Add tests for impls on specific array lengths (these work!!! 😁 )
* Add tests for const generics (indeed we don't support it yet)
2021-05-14 01:39:28 -07:00
Jade
32c600664e
Test lowering byte strings some more
2021-05-12 21:22:46 -07:00
Jade
e666589e63
Add support for lengths in array repeats, if they are literals
...
Now we will get the type of `[0u8; 4]`.
2021-05-12 21:22:46 -07:00
Jade
73023c0299
Support length for ByteStrings
...
I am not confident that my added byte string parsing is right.
2021-05-12 21:22:46 -07:00
Jade
8b147624ff
Add lowering of array lengths in types
...
Now e.g.
```rust
fn a(b: [u8; 2]) {
}
```
will know about the length of b.
2021-05-12 21:22:46 -07:00
bors[bot]
312f1fe20a
Merge #8799
...
8799: Add basic support for array lengths in types r=flodiebold a=lf-
This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead
of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range
array declarations are unsupported as before.
I don't know why a bunch of our rustc tests had single quotes inside
strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's
bad? Maybe something in a nightly?
Co-authored-by: Jade <software@lfcode.ca>
2021-05-12 14:49:43 +00:00
Jade
dc63fea427
Add basic support for array lengths in types
...
This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead
of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range
array declarations are unsupported as before.
I don't know why a bunch of our rustc tests had single quotes inside
strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's
bad? Maybe something in a nightly?
2021-05-11 05:25:19 -07:00
Daniel McNab
11c926fd97
Add a test for conditionally compiled tails
2021-05-03 14:14:33 +01:00
Florian Diebold
c2aefd5b95
Don't look in super traits for <T as Trait>::Assoc
...
This isn't actually how it works, you have to specify the exact trait
that has the associated type.
Fixes #8686 .
2021-04-29 20:23:02 +02:00
Florian Diebold
184a0d7c1e
Add test for #8686
2021-04-29 20:00:21 +02:00
Comonad
78f1583bdd
fix: closure unify without check ClosureId
...
closes #8604
2021-04-29 15:26:41 +08:00
bors[bot]
e4f7f1e1bd
Merge #8462
...
8462: Expand macros at type position r=jonas-schievink a=cynecx
Co-authored-by: cynecx <me@cynecx.net>
2021-04-19 13:01:30 +00:00
Jonas Schievink
20c27dbdbe
Collect inherent impls in unnamed consts
2021-04-19 01:06:26 +02:00
cynecx
f0507ab7c6
hir_ty: cleanups and extend infinitely_recursive_macro_type test
2021-04-18 20:18:48 +02:00
cynecx
6ed2fd233b
hir_ty: keep body::Expander in TyLoweringContext
2021-04-18 19:56:13 +02:00
cynecx
cf3b4f1e20
hir_ty: Expand macros at type position
2021-04-17 16:24:56 +02:00
Jonas Schievink
543d4ef7c5
Fix primitive shadowing with inner items
2021-04-16 19:28:22 +02:00
Jonas Schievink
e2c1da36f5
Support macros in pattern position
2021-04-11 01:25:50 +02:00
Lukas Wirth
8113c3a914
Respect test style guidelines in tests::traits
2021-04-10 18:03:27 +02:00
Lukas Wirth
a15b8136ee
Add test for binary op return ty with adt
2021-04-10 17:52:24 +02:00
Lukas Wirth
d9554c258b
Add manual ops::Add impls to test::traits::closure_2
2021-04-10 17:16:35 +02:00
Lukas Wirth
252eb78dc3
Implement more precise binary op return type prediction
2021-04-10 16:56:32 +02:00
Jonas Schievink
75614b126b
Resolve prelude and crate root names in the root DefMap
2021-04-09 15:29:42 +02:00
Florian Diebold
272a8dce4f
Fix crash on syn involving lifetimes returned by Chalk
...
If we get lifetime variables back in autoderef, just immediately replace
them by static lifetimes for now. Method resolution doesn't really deal
correctly with new variables being introduced (this needs to be fixed
more properly).
This fixes `rust-analyzer analysis-stats --with-deps` crashing in the RA
repo.
2021-04-09 11:17:07 +02:00
bors[bot]
a8f1e41f0f
Merge #8394
...
8394: Infer variants through type aliased enums r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-07 09:35:40 +00:00
Lukas Wirth
41563fd612
Infer variants through type aliased enums
2021-04-07 11:31:50 +02:00
Jonas Schievink
7c1c0e6fea
Collect trait impls inside unnamed consts
2021-04-07 03:33:22 +02:00
Edwin Cheng
6a3f2ce76c
Fix block inner item defined in macro
2021-04-01 03:45:21 +08:00
Lukas Wirth
6f0575f08a
Fix generic arguments being incorrectly offset in qualified trait casts
2021-03-30 23:23:00 +02:00
Edwin Cheng
a193666361
Basic Support Macro 2.0
2021-03-27 13:44:54 +08:00
Edwin Cheng
8ce15b02de
Fix recursive macro statement expansion
2021-03-26 04:21:15 +08:00
bors[bot]
d7db38fff9
Merge #7907
...
7907: Autoderef with visibility r=cynecx a=cynecx
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/7841 .
I am not sure about the general approach here. Right now this simply tries to check whether the autoderef candidate is reachable from the current module. ~~However this doesn't exactly work with traits (see the `tests::macros::infer_derive_clone_in_core` test, which fails right now).~~ see comment below
Refs:
- `rustc_typeck` checking fields: 66ec64ccf3/compiler/rustc_typeck/src/check/expr.rs (L1610)
r? @flodiebold
Co-authored-by: cynecx <me@cynecx.net>
2021-03-24 22:37:48 +00:00
bors[bot]
4b997b8663
Merge #8156
...
8156: Correctly lower TraitRefs with default params r=flodiebold a=Veykril
Fixes #5685
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-03-22 20:39:58 +00:00
Lukas Wirth
0aa4ac362d
Correctly lower TraitRefs with default params
2021-03-22 19:13:43 +01:00
Jonas Schievink
2633e23f2b
resolver: manually traverse nested block scopes
2021-03-22 18:55:51 +01:00
bors[bot]
858ad55437
Merge #8137
...
8137: Fix box pattern inference panic r=flodiebold a=Veykril
Fixes #6560
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-03-21 19:25:14 +00:00
bors[bot]
31ed164161
Merge #8134
...
8134: Correct the paths of submodules from the include! macro r=edwin0cheng a=sticnarf
This PR should fix #7846 . It mostly follows the instructions from @edwin0cheng in that issue.
Co-authored-by: Yilin Chen <sticnarf@gmail.com>
2021-03-21 17:57:45 +00:00
Lukas Wirth
af50e8d955
Fix box pattern inference panic
2021-03-21 18:25:00 +01: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
Florian Diebold
d8f8b495ad
Ignore type bindings in generic_predicates_for_param
...
This allows us to handle more cases without a query cycle, which
includes certain cases that rustc accepted. That in turn means we avoid
triggering salsa-rs/salsa#257 on valid code (it will still happen if the
user writes an actual cycle).
We actually accept more definitions than rustc now; that's because rustc
only ignores bindings when looking up super traits, whereas we now also
ignore them when looking for predicates to disambiguate associated type
shorthand. We could introduce a separate query for super traits if
necessary, but for now I think this should be fine.
2021-03-21 15:29:03 +01:00
Florian Diebold
0623bb4d71
Test for a Salsa bug
2021-03-21 13:33:06 +01:00
cynecx
42abfa0f88
hir_ty: add coverage testing for autoderef_visibility_method test
2021-03-20 20:35:57 +01:00
cynecx
2dc85f739a
hir_ty: fix test by removing trailing whitespace
2021-03-20 19:58:00 +01:00
cynecx
66d295d72d
hir_ty: fix visibility in infer_inherent_method test
2021-03-20 19:47:14 +01:00
cynecx
edfd741c5b
hir_ty: add tests around autoderef with visibility checking
2021-03-20 17:26:18 +01:00
cynecx
15e4aae823
hir_ty: fix tests by making required methods public
2021-03-20 17:12:49 +01:00