aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* Adds a param_idx helperFedor Sakharov2020-05-141-0/+5
|
* Handle coercing function types to function pointers in matchFlorian Diebold2020-05-081-0/+6
| | | | | | | | | | | | E.g. in ```rust match x { 1 => function1, 2 => function2, } ``` we need to try coercing both to pointers. Turns out this is a special case in rustc as well (see the link in the comment).
* Use matches!Florian Diebold2020-05-081-4/+1
|
* Implement better handling of divergenceFlorian Diebold2020-05-081-0/+7
| | | | | | | | Divergence here means that for some reason, the end of a block will not be reached. We tried to model this just using the never type, but that doesn't work fully (e.g. in `let x = { loop {}; "foo" };` x should still have type `&str`); so this introduces a `diverges` flag that the type checker keeps track of, like rustc does.
* Rename to associated_type_shorthand_candidatesJonas Schievink2020-04-291-2/+2
|
* Complete assoc. items on type parametersJonas Schievink2020-04-291-1/+2
|
* For associated type shorthand (T::Item), use the substs from the where clauseFlorian Diebold2020-04-261-0/+12
| | | | | So e.g. if we have `fn foo<T: SomeTrait<u32>>() -> T::Item`, we want to lower that to `<T as SomeTrait<u32>>::Item` and not `<T as SomeTrait<_>>::Item`.
* Fix wrong substitution codeFlorian Diebold2020-04-231-1/+1
| | | | | | | We need to shift in when we're substituting inside a binder. This should fix #4053 (it doesn't fix the occasional overflow that also occurs on the Diesel codebase though).
* Fix another crash from wrong bindersFlorian Diebold2020-04-171-2/+2
| | | | | | | Basically, if we had something like `dyn Trait<T>` (where `T` is a type parameter) in an impl we lowered that to `dyn Trait<^0.0>`, when it should be `dyn Trait<^1.0>` because the `dyn` introduces a new binder. With one type parameter, that's just wrong, with two, it'll lead to crashes.
* fix false positive for enum with no variantsJosh Mcguigan2020-04-161-0/+10
|
* missing match arms diagnosticJosh Mcguigan2020-04-071-0/+1
|
* Fix Chalk panicFlorian Diebold2020-04-061-1/+2
| | | | | Fixes #3865. Basically I forgot to shift 'back' when we got `dyn Trait`s back from Chalk, so after going through Chalk a few times, the panic happened.
* Check for eprintln on CIAleksey Kladov2020-04-061-0/+5
|
* Upgrade Chalk againFlorian Diebold2020-04-051-30/+73
| | | | | | | The big change here is counting binders, not variables (https://github.com/rust-lang/chalk/pull/360). We have to adapt to the same scheme for our `Ty::Bound`. It's mostly fine though, even makes some things more clear.
* Use `dyn Trait` for working with databseAleksey Kladov2020-03-161-17/+19
| | | | | | | It improves compile time in `--release` mode quite a bit, it doesn't really slow things down and, conceptually, it seems closer to what we want the physical architecture to look like (we don't want to monomorphise EVERYTHING in a single leaf crate).
* Normalize waiting queries namesAleksey Kladov2020-03-061-2/+2
|
* Fix #3373Florian Diebold2020-03-011-0/+4
| | | | | | | Basically, we need to allow variables in the caller self type to unify with the impl's declared self type. That requires some more contortions in the variable handling. I'm looking forward to (hopefully) handling this in a cleaner way when we switch to Chalk's types and unification code.
* Rework find_super_trait_path to protect against cyclesFlorian Diebold2020-02-221-7/+10
|
* Fix shift_bound_varsFlorian Diebold2020-02-221-3/+3
| | | | It should only shift free vars (maybe the name isn't the best...)
* Add &dyn Trait -> &dyn SuperTrait coercion, and fix &T -> &dyn TraitFlorian Diebold2020-02-221-0/+20
|
* Implement dyn Trait unsizing as wellFlorian Diebold2020-02-221-0/+11
|
* More manual clippy fixesKirill Bulatov2020-02-181-3/+2
|
* Run cargo +nightly fix --clippy -Z unstable-optionsKirill Bulatov2020-02-181-2/+2
|
* Move hir_fmt code to display moduleFlorian Diebold2020-02-141-371/+4
|
* Rename Ty::Param => Ty::PlaceholderFlorian Diebold2020-02-141-5/+5
| | | | This aligns more with Chalk.
* Fix some TODOsFlorian Diebold2020-02-071-7/+10
|
* Don't print implicit type args from impl TraitFlorian Diebold2020-02-071-3/+10
|
* FormattingFlorian Diebold2020-02-071-1/+4
|
* Fix compilation of other cratesFlorian Diebold2020-02-071-2/+8
|
* Use variables in predicates as wellFlorian Diebold2020-02-071-24/+4
|
* Comment fixes / todosFlorian Diebold2020-02-071-0/+2
|
* Fix APIT some moreFlorian Diebold2020-02-071-73/+80
|
* Change Ty::Param to contain param IDFlorian Diebold2020-02-071-22/+27
|
* Fix printing of function typesFlorian Diebold2020-02-071-3/+4
|
* Lower impl trait to variables, move away from using placeholders where they ↵Florian Diebold2020-02-071-2/+32
| | | | don't belong
* wip lower impl trait to type argsFlorian Diebold2020-02-071-1/+1
|
* Add impl trait lowering modeFlorian Diebold2020-02-071-1/+3
|
* Introduce TyLoweringContextFlorian Diebold2020-02-071-1/+1
|
* Standard formatting for array typesAleksey Kladov2020-01-281-1/+1
|
* Omit default parameters for reference typesKirill Bulatov2020-01-221-1/+6
|
* Split `infer` query into two for better profilingMichal Terepeta2020-01-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
* Omit closure parametersKirill Bulatov2019-12-231-11/+20
|
* Clippy lintskjeremy2019-12-201-1/+1
|
* Rename ContainerId -> AssocContainerIdAleksey Kladov2019-12-201-4/+4
|
* Omit default parameter typesKirill Bulatov2019-12-191-1/+32
|
* ReformatAleksey Kladov2019-12-071-2/+2
|
* Refactor parameter count trackingAleksey Kladov2019-12-071-5/+5
|
* Remove idx and parent generics from genericsAleksey Kladov2019-12-071-21/+11
| | | | | This makes `hir_def::GenericParams` flatter. The logic for re-numbering the params is moved to hir instead.
* Handle cycles in impl types betterFlorian Diebold2019-11-301-15/+0
| | | | | | - impl Trait<Self> for S is allowed - impl Trait for S<Self> is an invalid cycle, but we can add cycle recovery for it in Salsa now
* Use Name::missing consistentlyAleksey Kladov2019-11-271-18/+7
|