Commit Graph

11401 Commits

Author SHA1 Message Date
Jonas Schievink
11825ac5fe Explain why nested TypeRef aren't interned 2021-05-23 16:28:23 +02:00
Aramis Razzaghipour
4d4dbcfead
Give ‘unsafe’ semantic token modifier to unsafe traits 2021-05-23 21:45:10 +10:00
bors[bot]
0ec4ce1e9b
Merge #8938
8938: internal: Fix #8931 r=flodiebold a=flodiebold

  - and add some better checking for similar bugs

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-05-23 11:03:18 +00:00
Florian Diebold
34a3bc4196 Paper over #8931 a bit more
The problem was the skipping of binders in
`resolve_method_call_as_callable`; this still doesn't use the _correct_
substitution, but at least it doesn't return a type with free variables
in it.

Fixes #8931.
2021-05-23 13:00:14 +02:00
Florian Diebold
a5d85a6356 Add test for #8931 and better checking 2021-05-23 12:52:41 +02:00
Jonas Schievink
15ff7faf3d Render where clauses and more generic params 2021-05-23 02:51:58 +02:00
Jonas Schievink
380293d6c2 Pretty-print generic parameters 2021-05-23 01:15:26 +02:00
Jonas Schievink
c22ccd07fe ItemTree: pretty-print all paths 2021-05-23 00:37:15 +02:00
Florian Diebold
a88c7c04d2 Add last remaining module docstring 2021-05-22 16:39:56 +02:00
bors[bot]
a99de65573
Merge #8923
8923: Add even more docs r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-05-22 14:20:42 +00:00
Aleksey Kladov
dc1577d58d Add even more docs 2021-05-22 17:20:22 +03:00
bors[bot]
d56e52402e
Merge #8922
8922: Add more docs r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-05-22 13:54:13 +00:00
Aleksey Kladov
188b0f96f9 Add more docs 2021-05-22 16:53:47 +03:00
bors[bot]
542337eca4
Merge #8868
8868: internal: replace AstTransformer with mutable syntax trees r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-05-22 13:30:32 +00:00
Aleksey Kladov
e6776c3e1b use more precise name 2021-05-22 16:23:07 +03:00
bors[bot]
057e2ed574
Merge #8921
8921: Resolve any lifetime variables to 'static after inference r=flodiebold a=flodiebold

Chalk's unification can sometimes create lifetime variables, which we
currently don't really deal with, but at least we don't want to leak
them outside of inference.

Should fix #8919.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-05-22 12:32:12 +00:00
Aleksey Kladov
47d7434dde internal: replace AstTransformer with mutable syntax trees 2021-05-22 15:27:32 +03:00
Florian Diebold
63614aafad Resolve any lifetime variables to 'static after inference
Chalk's unification can sometimes create lifetime variables, which we
currently don't really deal with, but at least we don't want to leak
them outside of inference.

Should fix #8919.
2021-05-22 14:27:22 +02:00
bors[bot]
7d81e40e36
Merge #8901
8901: fix: `fill_match_arms` hangs on a tuple of large enums r=matklad a=iDawer

+ Lazy computation of missing arms.
+ Convenience function to test lazy computation: `ide_assists::tests::check_assist_unresolved`.

Fixes #8835 

Co-authored-by: Dawer <7803845+iDawer@users.noreply.github.com>
2021-05-22 12:26:40 +00:00
Jonas Schievink
d077b8a7e0 Work around non-unique AttrIds 2021-05-22 02:30:03 +02:00
Jonas Schievink
271ec6b990 Add a "Debug ItemTree" LSP request 2021-05-21 23:59:52 +02:00
Jonas Schievink
8d13864440 Add an ItemTree pretty-printer 2021-05-21 23:45:27 +02:00
Jonas Schievink
01df4c04d1 impl Display for AttrInput/ImportAlias 2021-05-21 23:45:09 +02:00
Jonas Schievink
45f4a1e559 Remove StructDefKind 2021-05-21 21:08:06 +02:00
bors[bot]
edbde25ca2
Merge #8856
8856: Use Chalk for unification r=flodiebold a=flodiebold

 - use Chalk's unification, get rid of our own `unify`
 - rewrite coercion to not use unification internals and to be more analogous to rustc
 - fix various coercion bugs
 - rewrite handling of obligations, since the old hacky optimization where we noted when an inference variable changes wasn't possible anymore
 - stop trying to deeply resolve types all the time during inference, instead only do it shallowly where necessary

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-05-21 17:51:53 +00:00
Florian Diebold
ef558c97d0 Clean up visibilities 2021-05-21 19:51:21 +02:00
Jonas Schievink
d00bc9c2fc Don't lower extern block in the ItemTree 2021-05-21 18:27:25 +02:00
Florian Diebold
67f1a08fd8 Some remaining cleanups 2021-05-21 18:23:03 +02:00
Florian Diebold
e9d1550001 Fix test after rebase 2021-05-21 18:23:03 +02:00
Florian Diebold
6e5637983c Record type mismatches for failed coercions in match etc. 2021-05-21 18:23:03 +02:00
Florian Diebold
556c9cebdb Refactor expectation handling
So as to not use `TyKind::Error` as "no expectation".
2021-05-21 18:23:03 +02:00
Florian Diebold
99c73537fa Remove TypeVariableTable 2021-05-21 17:49:09 +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
a78f0076ab Make resolve_ty_shallow return Ty 2021-05-21 17:48:34 +02:00
Florian Diebold
1250ddc5cf Rework obligation handling
We can't do the easy hack that we did before anymore, where we kept
track of whether any inference variables changed since the last time we
rechecked obligations. Instead, we store the obligations in
canonicalized form; that way we can easily check the inference variables
to see whether they have changed since the goal was canonicalized.
2021-05-21 17:48:34 +02:00
Florian Diebold
a3d9cac690 Fix another panic 2021-05-21 17:48:34 +02:00
Florian Diebold
29266ada04 Improve debug printing without TLS 2021-05-21 17:48:34 +02:00
Florian Diebold
7c423f5b88 Fix panic 2021-05-21 17:48:34 +02:00
Florian Diebold
8397734cfe Fix HIR expecting errors to unify with anything 2021-05-21 17:48:34 +02:00
Florian Diebold
48c492af7e Fix compilation of hir and ide crates 2021-05-21 17:48:34 +02:00
Florian Diebold
b939a6dcac Fix if/else coercion 2021-05-21 17:48:34 +02:00
Florian Diebold
212f0477f2 Make diverging type variables work again
Chalk doesn't know about the `diverging` flag, so we need to instead
propagate it before fully resolving the variables.
2021-05-21 17:48:34 +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
Florian Diebold
3379a52dff Make type resolver a proper folder, make it resolve consts as well 2021-05-21 17:48:34 +02:00
Florian Diebold
278f5b043d Fix fallback to bound vars in unify 2021-05-21 17:48:34 +02:00
Florian Diebold
aebcf7b5d4 Better Debug impl for InternedWrapper 2021-05-21 17:48:34 +02:00
Florian Diebold
0f7f1f0705 Temporary fix for unknown expectations 2021-05-21 17:48:34 +02:00