Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Fix match ergonomics in closure parameters | Florian Diebold | 2020-05-29 | 1 | -5/+11 |
| | | | | Fixes #4476. | ||||
* | Support raw_ref_op's raw reference operator | robojumper | 2020-05-28 | 1 | -14/+23 |
| | |||||
* | Apply suggestion of @flodiebold: Get rid of multiple unwraps | Roland Ruckerbauer | 2020-05-19 | 1 | -12/+10 |
| | |||||
* | loop return value inference: coerce_merge branches | Roland Ruckerbauer | 2020-05-19 | 1 | -15/+23 |
| | |||||
* | Infer return type of loops with value breaks. | Roland Ruckerbauer | 2020-05-18 | 1 | -6/+15 |
| | |||||
* | Add diagnostic for break outside of loop | Florian Diebold | 2020-05-08 | 1 | -0/+4 |
| | |||||
* | Handle break somewhat better | Florian Diebold | 2020-05-08 | 1 | -2/+27 |
| | | | | | Still no break-with-value or labels, but at least we know that `loop { break; }` doesn't diverge. | ||||
* | Implement better handling of divergence | Florian Diebold | 2020-05-08 | 1 | -14/+39 |
| | | | | | | | | 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. | ||||
* | Fix type of byte literals | Florian Diebold | 2020-05-08 | 1 | -2/+2 |
| | | | | They're `&[u8; N]`, not `&[u8]` (see #4374). | ||||
* | Revert "Merge #4233" | Aleksey Kladov | 2020-05-02 | 1 | -0/+5 |
| | | | | | This reverts commit a5f2b16366f027ad60c58266a66eb7fbdcbda9f9, reversing changes made to c96b2180c1c4206a0a98c280b4d30897eb116336. | ||||
* | Kill more zombies | Aleksey Kladov | 2020-04-30 | 1 | -5/+0 |
| | |||||
* | Rename StructField -> Field | Aleksey Kladov | 2020-04-25 | 1 | -5/+3 |
| | |||||
* | Use `dyn Trait` for working with databse | Aleksey Kladov | 2020-03-16 | 1 | -11/+12 |
| | | | | | | | 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). | ||||
* | Do autoderef for indexing | Florian Diebold | 2020-02-29 | 1 | -5/+21 |
| | |||||
* | Fix a common false-positive type mismatch | Florian Diebold | 2020-02-29 | 1 | -4/+4 |
| | | | | | | | | | 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. | ||||
* | More manual clippy fixes | Kirill Bulatov | 2020-02-18 | 1 | -11/+5 |
| | |||||
* | Run cargo +nightly fix --clippy -Z unstable-options | Kirill Bulatov | 2020-02-18 | 1 | -13/+7 |
| | |||||
* | Don't let unknown match arms fall back to ! | Florian Diebold | 2020-02-11 | 1 | -1/+5 |
| | |||||
* | Add or- and parenthesized-patterns | Matthew Jasper | 2020-02-09 | 1 | -3/+1 |
| | |||||
* | Fix some TODOs | Florian Diebold | 2020-02-07 | 1 | -1/+0 |
| | |||||
* | Deal better with implicit type parameters and argument lists | Florian Diebold | 2020-02-07 | 1 | -3/+5 |
| | |||||
* | Formatting | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Clean up RPIT a bit | Florian Diebold | 2020-02-07 | 1 | -1/+0 |
| | |||||
* | Use variables in predicates as well | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Comment fixes / todos | Florian Diebold | 2020-02-07 | 1 | -0/+1 |
| | |||||
* | Change Ty::Param to contain param ID | Florian Diebold | 2020-02-07 | 1 | -3/+2 |
| | |||||
* | Lower impl trait to variables, move away from using placeholders where they ↵ | Florian Diebold | 2020-02-07 | 1 | -3/+3 |
| | | | | don't belong | ||||
* | wip lower impl trait to type args | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Fix inference for shift operators | Florian Diebold | 2020-01-17 | 1 | -2/+2 |
| | | | | Fixes #2602. | ||||
* | Push resolver further up | Aleksey Kladov | 2020-01-14 | 1 | -6/+13 |
| | |||||
* | Fix coercion of last expression in function body | Florian Diebold | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Handle closure return types | Florian Diebold | 2019-12-20 | 1 | -3/+14 |
| | | | | Fixes #2547. | ||||
* | Merge #2592 | bors[bot] | 2019-12-20 | 1 | -4/+8 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2592: Add std::ops::Index support for infering r=edwin0cheng a=edwin0cheng see also #2534 Seem like this can't fix #2534 for this case: ```rust fn foo3(bar: [usize; 2]) { let baz = bar[1]; // <--- baz is still unknown ? println!("{}", baz); } ``` Co-authored-by: Edwin Cheng <[email protected]> | ||||
| * | Add std::ops::Index support for infering | Edwin Cheng | 2019-12-19 | 1 | -4/+8 |
| | | |||||
* | | Rename ContainerId -> AssocContainerId | Aleksey Kladov | 2019-12-20 | 1 | -2/+2 |
|/ | |||||
* | Handle impl Trait more correctly | Florian Diebold | 2019-12-15 | 1 | -0/+1 |
| | | | | | | | 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. | ||||
* | Rename N! to name! | Florian Diebold | 2019-12-13 | 1 | -2/+2 |
| | |||||
* | Add macros for known names and paths | Florian Diebold | 2019-12-13 | 1 | -2/+2 |
| | |||||
* | Correctly infer - and ! using std::ops::{Neg,Not} | Emil Lauridsen | 2019-12-13 | 1 | -21/+26 |
| | |||||
* | Add helper for resolving associated type of trait in infer | Emil Lauridsen | 2019-12-13 | 1 | -47/+7 |
| | |||||
* | Refactor parameter count tracking | Aleksey Kladov | 2019-12-07 | 1 | -10/+8 |
| | |||||
* | Remove idx and parent generics from generics | Aleksey Kladov | 2019-12-07 | 1 | -11/+13 |
| | | | | | This makes `hir_def::GenericParams` flatter. The logic for re-numbering the params is moved to hir instead. | ||||
* | Store GenericParams in arena | Aleksey Kladov | 2019-12-07 | 1 | -1/+1 |
| | |||||
* | Don't unify within a reference | Florian Diebold | 2019-12-06 | 1 | -11/+10 |
| | | | | | | | If we are expecting a `&Foo` and get a `&something`, when checking the `something`, we are *expecting* a `Foo`, but we shouldn't try to unify whatever we get with that expectation, because it could actually be a `&Foo`, and `&&Foo` coerces to `&Foo`. So this fixes quite a few false type mismatches. | ||||
* | Extract unification code to unify module | Florian Diebold | 2019-12-02 | 1 | -15/+15 |
| | |||||
* | Reduce variants of Expr | oxalica | 2019-11-29 | 1 | -39/+37 |
| | |||||
* | Infer range types | oxalica | 2019-11-28 | 1 | -0/+41 |
| | |||||
* | Move Ty | Aleksey Kladov | 2019-11-27 | 1 | -0/+686 |