Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Fix handling of const patterns | Florian Diebold | 2020-02-21 | 1 | -1/+45 |
| | | | | | | | | | E.g. in `match x { None => ... }`, `None` is a path pattern (resolving to the option variant), not a binding. To determine this, we need to try to resolve the name during lowering. This isn't too hard since we already need to resolve names for macro expansion anyway (though maybe a bit hacky). Fixes #1618. | ||||
* | Normalize associated types in types coming from Chalk | Florian Diebold | 2020-02-21 | 1 | -0/+42 |
| | | | | Fixes #3232. | ||||
* | Exclude methods from non-parameter types introduced by generic constraints | Laurențiu Nicola | 2020-02-19 | 1 | -0/+23 |
| | |||||
* | 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. | ||||
* | Merge #3147 | bors[bot] | 2020-02-14 | 1 | -0/+32 |
|\ | | | | | | | | | | | | | | | 3147: Check that impl self type matches up with expected self type in path mode r=matklad a=flodiebold Fixes #3144. Co-authored-by: Florian Diebold <[email protected]> | ||||
| * | Check that impl self type matches up with expected self type in path mode | Florian Diebold | 2020-02-14 | 1 | -0/+32 |
| | | | | | | | | Fixes #3144. | ||||
* | | Make Self implement the trait inside trait default methods | Florian Diebold | 2020-02-14 | 1 | -0/+48 |
|/ | |||||
* | Don't let unknown match arms fall back to ! | Florian Diebold | 2020-02-11 | 1 | -0/+17 |
| | |||||
* | Add two more tests | Florian Diebold | 2020-02-07 | 1 | -0/+51 |
| | |||||
* | Don't print implicit type args from impl Trait | Florian Diebold | 2020-02-07 | 1 | -11/+11 |
| | |||||
* | Deal better with implicit type parameters and argument lists | Florian Diebold | 2020-02-07 | 1 | -0/+108 |
| | |||||
* | Clean up RPIT a bit | Florian Diebold | 2020-02-07 | 1 | -13/+11 |
| | |||||
* | Fix APIT some more | Florian Diebold | 2020-02-07 | 1 | -23/+28 |
| | |||||
* | Change Ty::Param to contain param ID | Florian Diebold | 2020-02-07 | 2 | -3/+2 |
| | |||||
* | WIP use params for APIT | Florian Diebold | 2020-02-07 | 1 | -0/+53 |
| | |||||
* | Fix assoc type selection | Florian Diebold | 2020-02-07 | 1 | -3/+3 |
| | |||||
* | Fix another test | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Fix enum constructors | Florian Diebold | 2020-02-07 | 2 | -5/+5 |
| | |||||
* | Fix printing of function types | Florian Diebold | 2020-02-07 | 6 | -69/+69 |
| | |||||
* | Lower impl trait to variables, move away from using placeholders where they ↵ | Florian Diebold | 2020-02-07 | 1 | -1/+1 |
| | | | | don't belong | ||||
* | wip implement lowering mode | Florian Diebold | 2020-02-07 | 1 | -20/+8 |
| | |||||
* | Standard formatting for array types | Aleksey Kladov | 2020-01-28 | 4 | -88/+88 |
| | |||||
* | Ignore failing impl Trait tests | Florian Diebold | 2020-01-27 | 1 | -0/+2 |
| | |||||
* | Fix inference for shift operators | Florian Diebold | 2020-01-17 | 1 | -0/+21 |
| | | | | Fixes #2602. | ||||
* | Use dummy value for line! and column! macro | Edwin Cheng | 2020-01-14 | 1 | -2/+2 |
| | |||||
* | Fix various names, e.g. Iterator not resolving in core prelude | Florian Diebold | 2020-01-11 | 1 | -0/+54 |
| | | | | | | | | | | | | | Basically, `Iterator` is re-exported via several steps, which happened to not be resolved yet when we got to the prelude import, but since the name resolved to the reexport from `core::iter` (just to no actual items), we gave up trying to resolve it further. Maybe part of the problem is that we can have `PartialResolvedImport::Unresolved` or `PartialResolvedImport::Indeterminate` with `None` in all namespaces, and handle them differently. Fixes #2683. | ||||
* | Add test for macro expansion in various expressions | Florian Diebold | 2020-01-10 | 1 | -0/+81 |
| | |||||
* | Expand PAREN_EXPR as expression | Edwin Cheng | 2020-01-10 | 1 | -0/+17 |
| | |||||
* | Fix #2705 | Florian Diebold | 2020-01-03 | 1 | -0/+17 |
| | | | | | | | | The `-` turned into a `+` during a refactoring. The original issue was caused by `Read` resolving wrongly to a trait without type parameters instead of a struct with one parameter; this only fixes the crash, not the wrong resolution. | ||||
* | Resolve traits in infer using lang item infrastructure | Emil Lauridsen | 2019-12-29 | 2 | -0/+6 |
| | |||||
* | Don't add non-impl/trait containers to scope | Aleksey Kladov | 2019-12-29 | 2 | -1/+38 |
| | |||||
* | Merge #2661 | bors[bot] | 2019-12-24 | 1 | -0/+57 |
|\ | | | | | | | | | | | | | | | | | | | | | | | 2661: Implement infer await from async function r=flodiebold a=edwin0cheng This PR is my attempt for trying to add support for infer `.await` expression from an `async` function, by desugaring its return type to `Impl Future<Output=RetType>`. Note that I don't know it is supposed to desugaring it in that phase, if it is not suitable in current design, just feel free to reject it :) r=@flodiebold Co-authored-by: Edwin Cheng <[email protected]> | ||||
| * | Implement infer await from async func | Edwin Cheng | 2019-12-24 | 1 | -0/+57 |
| | | |||||
* | | Filter out error predicates in type bounds as well | Florian Diebold | 2019-12-22 | 1 | -0/+17 |
| | | |||||
* | | Introduce our own Chalk TypeFamily, instead of using ChalkIr | Florian Diebold | 2019-12-22 | 1 | -2/+2 |
|/ | | | | | | It's not very different, except we can directly use Salsa IDs instead of casting them. This means we need to refactor the handling of errors to get rid of UNKNOWN_TRAIT though. | ||||
* | Rudimentary name resolution for local items | Aleksey Kladov | 2019-12-22 | 1 | -6/+6 |
| | |||||
* | Recursive collect macros in impl items | Edwin Cheng | 2019-12-20 | 1 | -0/+23 |
| | |||||
* | Merge #2623 | bors[bot] | 2019-12-20 | 1 | -0/+19 |
|\ | | | | | | | | | | | | | | | | | | | 2623: Add support macros in impl blocks r=matklad a=edwin0cheng This PR add support for macros in impl blocks, which reuse `Expander` for macro expansion. see also: #2459 Co-authored-by: Edwin Cheng <[email protected]> | ||||
| * | Add support macros in impl blocks | Edwin Cheng | 2019-12-20 | 1 | -0/+19 |
| | | |||||
* | | Coerce closures to fn pointers | Florian Diebold | 2019-12-20 | 2 | -5/+44 |
| | | | | | | | | 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 | 2 | -0/+86 |
|/ | | | | Fixes #2547. | ||||
* | Add std::ops::Index support for infering | Edwin Cheng | 2019-12-19 | 1 | -0/+32 |
| | |||||
* | Add test mark | Florian Diebold | 2019-12-15 | 1 | -2/+6 |
| | |||||
* | Handle impl Trait more correctly | Florian Diebold | 2019-12-15 | 1 | -0/+31 |
| | | | | | | | 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. | ||||
* | Add test for unifying impl Trait | Florian Diebold | 2019-12-15 | 1 | -1/+27 |
| | |||||
* | Correctly infer - and ! using std::ops::{Neg,Not} | Emil Lauridsen | 2019-12-13 | 1 | -0/+64 |
| | |||||
* | 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. | ||||
* | Add tests | Edwin Cheng | 2019-12-06 | 1 | -0/+29 |
| | |||||
* | 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. |