Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Intern TypeRefs stored in Body | Jonas Schievink | 2021-04-06 | 1 | -4/+5 |
| | | | | Minor improvement to memory usage (1 MB or so) | ||||
* | Use Box'es to reduce the size of hir_def::expr::Pat from 112 to 64 bytes on ↵ | Alexandru Macovei | 2021-04-06 | 1 | -3/+3 |
| | | | | 64bit | ||||
* | Use Box'es to reduce size of hir_def::expr::Expr from 128 to 72 bytes (on ↵ | Alexandru Macovei | 2021-04-06 | 1 | -4/+4 |
| | | | | | | | | | | 64bit systems) Rationale: only a minority of variants used almost half the size. By keeping large members (especially in Option) behind a box the memory cost is only payed when the large variants are needed. This reduces the size Vec<Expr> needs to allocate. | ||||
* | Fix recursive macro statement expansion | Edwin Cheng | 2021-03-25 | 1 | -0/+4 |
| | |||||
* | Introduce TypeCtor::Scalar | Lukas Wirth | 2021-02-28 | 1 | -1/+2 |
| | |||||
* | Use block_def_map in body lowering | Jonas Schievink | 2021-02-03 | 1 | -0/+2 |
| | |||||
* | Revert "Use block_def_map in body lowering" | Jonas Schievink | 2021-02-02 | 1 | -2/+0 |
| | |||||
* | Use block_def_map in body lowering | Jonas Schievink | 2021-02-01 | 1 | -0/+2 |
| | |||||
* | Use ‘index’ terminology for arena consistently | Aramis Razzaghipour | 2021-01-17 | 1 | -2/+2 |
| | |||||
* | Add support for yiled keyword | Daiki Ihara | 2021-01-15 | 1 | -1/+4 |
| | |||||
* | prepare to publish el libro de arena | Aleksey Kladov | 2021-01-14 | 1 | -1/+1 |
| | |||||
* | Fixed typos in code comments | Vincent Esche | 2021-01-09 | 1 | -1/+1 |
| | |||||
* | Merge #7021 | bors[bot] | 2020-12-24 | 1 | -4/+10 |
|\ | | | | | | | | | | | | | | | 7021: Track labels in the HIR r=matklad a=Veykril Groundwork for #6966 Co-authored-by: Lukas Wirth <[email protected]> | ||||
| * | Track labels in the HIR | Lukas Wirth | 2020-12-24 | 1 | -4/+10 |
| | | |||||
* | | Implement const block inference | Lukas Wirth | 2020-12-23 | 1 | -1/+7 |
| | | |||||
* | | Implement const pat inference | Lukas Wirth | 2020-12-23 | 1 | -1/+7 |
|/ | |||||
* | Merge #5971 | bors[bot] | 2020-09-13 | 1 | -1/+4 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5971: Implement async blocks r=flodiebold a=oxalica Fix #4018 @flodiebold already gave a generic guide in the issue. Here's some concern about implementation detail: - Chalk doesn't support generator type yet. - Adding generator type as a brand new type (ctor) can be complex and need to *re-introduced* builtin impls. (Like how we implement closures before native closure support of chalk, which is already removed in #5401 ) - The output type of async block should be known after type inference of the whole body. - We cannot directly get the type from source like return-positon-impl-trait. But we still need to provide trait bounds when chalk asking for `opaque_ty_data`. - During the inference, the output type of async block can be temporary unknown and participate the later inference. `let a = async { None }; let _: i32 = a.await.unwrap();` So in this PR, the type of async blocks is inferred as an opaque type parameterized by the `Future::Output` type it should be, like what we do with closure type. And it really works now. Well, I still have some questions: - The bounds `AsyncBlockImplType<T>: Future<Output = T>` is currently generated in `opaque_ty_data`. I'm not sure if we should put this code here. - Type of async block is now rendered as `impl Future<Output = OutputType>`. Do we need to special display to hint that it's a async block? Note that closure type has its special format, instead of `impl Fn(..) -> ..` or function type. Co-authored-by: oxalica <[email protected]> | ||||
| * | Implement async blocks | oxalica | 2020-09-10 | 1 | -1/+4 |
| | | |||||
* | | Implement box pattern inference | Jonas Schievink | 2020-09-12 | 1 | -0/+2 |
|/ | |||||
* | Rename ra_hir_def -> hir_def | Aleksey Kladov | 2020-08-13 | 1 | -0/+420 |