Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Adds a param_idx helper | Fedor Sakharov | 2020-05-14 | 1 | -0/+5 |
| | |||||
* | Handle coercing function types to function pointers in match | Florian Diebold | 2020-05-08 | 1 | -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 Diebold | 2020-05-08 | 1 | -4/+1 |
| | |||||
* | Implement better handling of divergence | Florian Diebold | 2020-05-08 | 1 | -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_candidates | Jonas Schievink | 2020-04-29 | 1 | -2/+2 |
| | |||||
* | Complete assoc. items on type parameters | Jonas Schievink | 2020-04-29 | 1 | -1/+2 |
| | |||||
* | For associated type shorthand (T::Item), use the substs from the where clause | Florian Diebold | 2020-04-26 | 1 | -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 code | Florian Diebold | 2020-04-23 | 1 | -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 binders | Florian Diebold | 2020-04-17 | 1 | -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 variants | Josh Mcguigan | 2020-04-16 | 1 | -0/+10 |
| | |||||
* | missing match arms diagnostic | Josh Mcguigan | 2020-04-07 | 1 | -0/+1 |
| | |||||
* | Fix Chalk panic | Florian Diebold | 2020-04-06 | 1 | -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 CI | Aleksey Kladov | 2020-04-06 | 1 | -0/+5 |
| | |||||
* | Upgrade Chalk again | Florian Diebold | 2020-04-05 | 1 | -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 databse | Aleksey Kladov | 2020-03-16 | 1 | -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 names | Aleksey Kladov | 2020-03-06 | 1 | -2/+2 |
| | |||||
* | Fix #3373 | Florian Diebold | 2020-03-01 | 1 | -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 cycles | Florian Diebold | 2020-02-22 | 1 | -7/+10 |
| | |||||
* | Fix shift_bound_vars | Florian Diebold | 2020-02-22 | 1 | -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 Trait | Florian Diebold | 2020-02-22 | 1 | -0/+20 |
| | |||||
* | Implement dyn Trait unsizing as well | Florian Diebold | 2020-02-22 | 1 | -0/+11 |
| | |||||
* | More manual clippy fixes | Kirill Bulatov | 2020-02-18 | 1 | -3/+2 |
| | |||||
* | Run cargo +nightly fix --clippy -Z unstable-options | Kirill Bulatov | 2020-02-18 | 1 | -2/+2 |
| | |||||
* | Move hir_fmt code to display module | Florian Diebold | 2020-02-14 | 1 | -371/+4 |
| | |||||
* | Rename Ty::Param => Ty::Placeholder | Florian Diebold | 2020-02-14 | 1 | -5/+5 |
| | | | | This aligns more with Chalk. | ||||
* | Fix some TODOs | Florian Diebold | 2020-02-07 | 1 | -7/+10 |
| | |||||
* | Don't print implicit type args from impl Trait | Florian Diebold | 2020-02-07 | 1 | -3/+10 |
| | |||||
* | Formatting | Florian Diebold | 2020-02-07 | 1 | -1/+4 |
| | |||||
* | Fix compilation of other crates | Florian Diebold | 2020-02-07 | 1 | -2/+8 |
| | |||||
* | Use variables in predicates as well | Florian Diebold | 2020-02-07 | 1 | -24/+4 |
| | |||||
* | Comment fixes / todos | Florian Diebold | 2020-02-07 | 1 | -0/+2 |
| | |||||
* | Fix APIT some more | Florian Diebold | 2020-02-07 | 1 | -73/+80 |
| | |||||
* | Change Ty::Param to contain param ID | Florian Diebold | 2020-02-07 | 1 | -22/+27 |
| | |||||
* | Fix printing of function types | Florian Diebold | 2020-02-07 | 1 | -3/+4 |
| | |||||
* | Lower impl trait to variables, move away from using placeholders where they ↵ | Florian Diebold | 2020-02-07 | 1 | -2/+32 |
| | | | | don't belong | ||||
* | wip lower impl trait to type args | Florian Diebold | 2020-02-07 | 1 | -1/+1 |
| | |||||
* | Add impl trait lowering mode | Florian Diebold | 2020-02-07 | 1 | -1/+3 |
| | |||||
* | Introduce TyLoweringContext | Florian Diebold | 2020-02-07 | 1 | -1/+1 |
| | |||||
* | Standard formatting for array types | Aleksey Kladov | 2020-01-28 | 1 | -1/+1 |
| | |||||
* | Omit default parameters for reference types | Kirill Bulatov | 2020-01-22 | 1 | -1/+6 |
| | |||||
* | Split `infer` query into two for better profiling | Michal Terepeta | 2020-01-03 | 1 | -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 parameters | Kirill Bulatov | 2019-12-23 | 1 | -11/+20 |
| | |||||
* | Clippy lints | kjeremy | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Rename ContainerId -> AssocContainerId | Aleksey Kladov | 2019-12-20 | 1 | -4/+4 |
| | |||||
* | Omit default parameter types | Kirill Bulatov | 2019-12-19 | 1 | -1/+32 |
| | |||||
* | Reformat | Aleksey Kladov | 2019-12-07 | 1 | -2/+2 |
| | |||||
* | Refactor parameter count tracking | Aleksey Kladov | 2019-12-07 | 1 | -5/+5 |
| | |||||
* | Remove idx and parent generics from generics | Aleksey Kladov | 2019-12-07 | 1 | -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 better | Florian Diebold | 2019-11-30 | 1 | -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 consistently | Aleksey Kladov | 2019-11-27 | 1 | -18/+7 |
| |