aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/infer.rs
Commit message (Collapse)AuthorAgeFilesLines
* Merge #1515bors[bot]2019-07-091-46/+23
|\ | | | | | | | | | | | | | | | | | | | | | | 1515: Trait environment r=matklad a=flodiebold This adds the environment, i.e. the set of `where` clauses in scope, when solving trait goals. That means that e.g. in ```rust fn foo<T: SomeTrait>(t: T) {} ``` , we are able to complete methods of `SomeTrait` on the `t`. This affects the trait APIs quite a bit (since every method that needs to be able to solve for some trait needs to get this environment somehow), so I thought I'd do it rather sooner than later ;) Co-authored-by: Florian Diebold <[email protected]>
| * Unify `normalize` and `implements` to simplify codeFlorian Diebold2019-07-081-46/+18
| |
| * Use environment for associated type normalization as wellFlorian Diebold2019-07-081-1/+2
| |
| * Start handling environment in trait resolutionFlorian Diebold2019-07-081-5/+6
| | | | | | | | | | I.e. if we are inside a function with some where clauses, we assume these where clauses hold.
| * Refactor a bit & introduce Environment structFlorian Diebold2019-07-081-2/+5
| |
* | use namespaced consts for KnownNameUnreal Hoang2019-07-081-12/+10
| |
* | projection over std::ops::Try::Ok to infer try/?Unreal Hoang2019-07-081-2/+37
|/
* cargo formatMuhammad Mominul Huque2019-07-071-3/+3
|
* Constify KnownName'sMuhammad Mominul Huque2019-07-071-6/+7
|
* add projection to infer for loop variableUnreal Hoang2019-07-071-33/+91
|
* Make EnumVariant a GenericDef and simplify some codeFlorian Diebold2019-07-061-6/+1
|
* Add trait obligations for where clauses when calling functions/methodsFlorian Diebold2019-07-061-2/+13
| | | | | E.g. if we call `foo<T: Into<u32>>(x)`, that adds an obligation that `x: Into<u32>`, etc.
* Clippy trivially_copy_pass_by_refJeremy Kolb2019-07-051-2/+2
|
* Merge #1491bors[bot]2019-07-051-1/+1
|\ | | | | | | | | | | | | | | | | | | 1491: More clippy r=matklad a=kjeremy A few more clippy changes. I'm a little unsure of the second commit. It's the trivially_copy_pass_by_ref lint and there are a number of places in the code we could use it if it makes sense. Co-authored-by: Jeremy Kolb <[email protected]>
| * Clippy changesJeremy Kolb2019-07-051-1/+1
| |
* | Fix clippy::redundant_cloneShotaro Yamada2019-07-051-2/+1
|/
* Some clippy fixes for 1.36Jeremy Kolb2019-07-041-8/+6
|
* allow rustfmt to reorder importsAleksey Kladov2019-07-041-20/+19
| | | | | | This wasn't a right decision in the first place, the feature flag was broken in the last rustfmt release, and syntax highlighting of imports is more important anyway
* rename XSignature -> XDataAleksey Kladov2019-06-181-13/+12
|
* Implement * operation using Deref traitFlorian Diebold2019-06-151-3/+5
|
* Implement autoderef using the Deref traitFlorian Diebold2019-06-151-19/+21
| | | | - add support for other lang item targets, since we need the Deref lang item
* check for cancellation when executing queriesAleksey Kladov2019-06-121-1/+0
| | | | | | | Note that we can't just remove CheckCanceled trait altogether: sometimes it's useful to check for cancellation while the query is running! We do this, for example, in the name resolution fixed-point loop.
* remove inherent source implsAleksey Kladov2019-06-111-1/+1
|
* use Source for FunctionAleksey Kladov2019-06-111-1/+1
|
* somewhat better nameAleksey Kladov2019-06-081-17/+20
|
* [#1083] Try block syntax: fix testsAndrey Tkachenko2019-06-061-1/+0
|
* [#1083] Try block syntaxAndrey Tkachenko2019-06-061-0/+6
|
* Fix clippy::or_fun_callAlan Du2019-06-041-1/+1
|
* Fix clippy::identity_conversionAlan Du2019-06-041-3/+3
|
* Fix clippy::into_iter_on_refAlan Du2019-06-041-1/+1
|
* Fix clippy::single_matchAlan Du2019-06-041-19/+14
|
* add ModuleDef::BuiltInTypeAleksey Kladov2019-05-301-1/+2
|
* add union to code_modelAleksey Kladov2019-05-231-8/+13
|
* profile type inferenceAleksey Kladov2019-05-211-1/+3
|
* Turn `implements` into a query againFlorian Diebold2019-05-071-2/+1
|
* Differentiate Tuple / FnPtr type constructors by cardinalityFlorian Diebold2019-05-041-4/+7
| | | | | This is necessary because Chalk (reasonably) expects each 'struct' to know how many type parameters it takes.
* Make canonicalization API a bit nicerFlorian Diebold2019-05-041-15/+16
|
* Canonicalize before doing method resolutionFlorian Diebold2019-05-041-3/+10
|
* Chalk integrationFlorian Diebold2019-05-041-15/+16
| | | | | - add proper canonicalization logic - add conversions from/to Chalk IR
* New krate() method in Resolver.Marco Groppo2019-04-191-28/+26
| | | | Renamed Impl to ImplBlock.
* Initial support for lang items.Marco Groppo2019-04-191-25/+29
|
* RefactoringEdwin Cheng2019-04-171-51/+46
|
* Simpliy codeEdwin Cheng2019-04-171-60/+32
|
* Bug fix and add more commentsEdwin Cheng2019-04-171-22/+60
|
* Fix 1099Edwin Cheng2019-04-171-3/+48
|
* Extract generic_params method to a HasGenericParams traitFlorian Diebold2019-04-141-4/+7
|
* Make callable signature handling a bit nicerFlorian Diebold2019-04-141-47/+14
|
* Some cleanupFlorian Diebold2019-04-141-90/+99
|
* More trait infrastructureFlorian Diebold2019-04-141-6/+78
| | | | | | | | | | - make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk)
* Avoid two-phase borrow conflictLaurențiu Nicola2019-04-081-2/+2
|