Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Bump chalk | Laurențiu Nicola | 2020-06-26 | 1 | -19/+23 |
| | |||||
* | Use only one code-path for parsing fixtures | Aleksey Kladov | 2020-06-23 | 1 | -316/+316 |
| | | | | | This removes leading newlines everywhere, shifting all ranges in tests by one | ||||
* | Support raw_ref_op's raw reference operator | robojumper | 2020-05-28 | 1 | -6/+11 |
| | |||||
* | Switch to new magic marks | Aleksey Kladov | 2020-05-20 | 1 | -3/+3 |
| | |||||
* | Handle coercing function types to function pointers in match | Florian Diebold | 2020-05-08 | 1 | -0/+42 |
| | | | | | | | | | | | | 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). | ||||
* | Implement better handling of divergence | Florian Diebold | 2020-05-08 | 1 | -2/+2 |
| | | | | | | | | 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. | ||||
* | Convert tests to text-size | Aleksey Kladov | 2020-04-25 | 1 | -291/+291 |
| | |||||
* | Hide unit fn return types | Laurențiu Nicola | 2020-04-05 | 1 | -4/+4 |
| | |||||
* | Add inference for literal and range patterns | Florian Diebold | 2020-04-01 | 1 | -0/+6 |
| | |||||
* | Fix a common false-positive type mismatch | Florian Diebold | 2020-02-29 | 1 | -0/+31 |
| | | | | | | | | | 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. | ||||
* | Rework find_super_trait_path to protect against cycles | Florian Diebold | 2020-02-22 | 1 | -0/+38 |
| | |||||
* | Add &dyn Trait -> &dyn SuperTrait coercion, and fix &T -> &dyn Trait | Florian Diebold | 2020-02-22 | 1 | -14/+26 |
| | |||||
* | Implement dyn Trait unsizing as well | Florian Diebold | 2020-02-22 | 1 | -1/+7 |
| | |||||
* | Implement unsize coercion using proper trait solving | Florian Diebold | 2020-02-22 | 1 | -0/+82 |
| | |||||
* | Fix coercion of &T to itself | Florian Diebold | 2020-02-16 | 1 | -0/+22 |
| | | | | | The autoderef coercion logic did not handle matching placeholders. This led to some type mismatches. | ||||
* | Fix printing of function types | Florian Diebold | 2020-02-07 | 1 | -13/+13 |
| | |||||
* | Standard formatting for array types | Aleksey Kladov | 2020-01-28 | 1 | -48/+48 |
| | |||||
* | Coerce closures to fn pointers | Florian Diebold | 2019-12-20 | 1 | -0/+39 |
| | | | | E.g. `let x: fn(A) -> B = |x| { y };` | ||||
* | Fix coercion of last expression in function body | Florian Diebold | 2019-12-20 | 1 | -0/+16 |
| | |||||
* | Handle closure return types | Florian Diebold | 2019-12-20 | 1 | -0/+31 |
| | | | | Fixes #2547. | ||||
* | Fix coercion from &Foo to an inference variable in a reference | Florian Diebold | 2019-12-08 | 1 | -0/+37 |
| | | | | We didn't try to unify within the reference, but we should. | ||||
* | Don't unify within a reference | Florian Diebold | 2019-12-06 | 1 | -0/+36 |
| | | | | | | | 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. | ||||
* | Move Ty | Aleksey Kladov | 2019-11-27 | 1 | -0/+369 |