aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/infer.rs
Commit message (Collapse)AuthorAgeFilesLines
* Fix a common false-positive type mismatchFlorian Diebold2020-02-291-5/+36
| | | | | | | | | E.g. for `&{ some_string() }` in a context where a `&str` is expected, we reported a mismatch inside the block. The problem is that we're passing an expectation of `str` down, but the expectation is more of a hint in this case. There's a long comment in rustc about this, which I just copied. Also, fix reported location for type mismatches in macros.
* Implement unsize coercion using proper trait solvingFlorian Diebold2020-02-221-7/+0
|
* Run cargo +nightly fix --clippy -Z unstable-optionsKirill Bulatov2020-02-181-6/+5
|
* FormattingFlorian Diebold2020-02-071-3/+6
|
* Clean up RPIT a bitFlorian Diebold2020-02-071-26/+2
|
* Fix APIT some moreFlorian Diebold2020-02-071-2/+5
|
* WIP use params for APITFlorian Diebold2020-02-071-1/+1
|
* Lower impl trait to variables, move away from using placeholders where they ↵Florian Diebold2020-02-071-13/+5
| | | | don't belong
* Add impl trait lowering modeFlorian Diebold2020-02-071-8/+25
|
* Introduce TyLoweringContextFlorian Diebold2020-02-071-9/+8
|
* Split `infer` query into two for better profilingMichal Terepeta2020-01-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the same change as we did with `crate_def_map` and it does seem that we mostly spend time in salsa, without recomputing much on rust-analyzer side. Example output: ``` 233ms - handle_inlay_hints 163ms - get_inlay_hints 163ms - SourceAnalyzer::new 67ms - def_with_body_from_child_node 67ms - analyze_container 67ms - analyze_container 67ms - Module::from_definition 67ms - Module::from_file 67ms - crate_def_map 0ms - parse_macro_query (6 calls) 0ms - raw_items_query (1 calls) 66ms - ??? 0ms - crate_def_map (1 calls) 0ms - crate_def_map (1 calls) 96ms - infer 2ms - trait_solve_query (2 calls) 94ms - ??? 0ms - body_with_source_map_query (1 calls) 0ms - crate_def_map (1 calls) [...] ``` Signed-off-by: Michal Terepeta <[email protected]>
* Resolve traits in infer using lang item infrastructureEmil Lauridsen2019-12-291-10/+13
|
* Check if parameters is emptyEdwin Cheng2019-12-241-4/+6
|
* Add FIXMEEdwin Cheng2019-12-241-1/+5
|
* Implement infer await from async funcEdwin Cheng2019-12-241-2/+15
|
* Fix coercion of last expression in function bodyFlorian Diebold2019-12-201-1/+1
|
* Handle closure return typesFlorian Diebold2019-12-201-1/+6
| | | | Fixes #2547.
* Use fill instread of for loopEdwin Cheng2019-12-191-5/+3
|
* Use build_for_defEdwin Cheng2019-12-191-1/+1
|
* Add std::ops::Index support for inferingEdwin Cheng2019-12-191-1/+21
|
* Add test markFlorian Diebold2019-12-151-0/+2
|
* Handle impl Trait more correctlyFlorian Diebold2019-12-151-1/+24
| | | | | | | When calling a function, argument-position impl Trait is transparent; same for return-position impl Trait when inside the function. So in these cases, we need to represent that type not by `Ty::Opaque`, but by a type variable that can be unified with whatever flows into there.
* Use different types for path with and without genericsAleksey Kladov2019-12-141-1/+1
|
* Use path macroFlorian Diebold2019-12-131-13/+13
|
* Rename N! to name!Florian Diebold2019-12-131-6/+6
|
* Add macros for known names and pathsFlorian Diebold2019-12-131-6/+6
|
* Correctly infer - and ! using std::ops::{Neg,Not}Emil Lauridsen2019-12-131-2/+14
|
* Add helper for resolving associated type of trait in inferEmil Lauridsen2019-12-131-0/+18
|
* Make unify pub(crate)Florian Diebold2019-12-031-1/+1
|
* Check receiver type properlyFlorian Diebold2019-12-021-2/+4
|
* Extract unification code to unify moduleFlorian Diebold2019-12-021-233/+22
|
* Infer range typesoxalica2019-11-281-0/+36
|
* Move source-related traits to a separate moduleAleksey Kladov2019-11-281-1/+1
|
* Move TyAleksey Kladov2019-11-271-0/+723