Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Add `TestDB::module_at_position` | Jonas Schievink | 2021-02-09 | 1 | -100/+4 |
| | |||||
* | Add expression scopes for blocks | Jonas Schievink | 2021-02-09 | 1 | -4/+18 |
| | |||||
* | Test `super` resolution too | Jonas Schievink | 2021-02-05 | 1 | -0/+2 |
| | |||||
* | Fix resolution of `self` module within blocks | Jonas Schievink | 2021-02-05 | 1 | -6/+8 |
| | |||||
* | Remove redundant clones | Yoshua Wuyts | 2021-02-05 | 1 | -1/+1 |
| | |||||
* | Expander: store a LocalModuleId, not ModuleId | Jonas Schievink | 2021-02-04 | 1 | -7/+7 |
| | | | | | It already stores the DefMap containing the module, so having a full ModuleId is unnecessary and makes it easier to mix things up | ||||
* | Don't keep the parent DefMap alive via Arc | Jonas Schievink | 2021-02-04 | 1 | -4/+3 |
| | | | | | This seems like it could easily leak a lot of memory since we don't currently run GC | ||||
* | Add newline between block and crate maps | Jonas Schievink | 2021-02-03 | 1 | -0/+10 |
| | |||||
* | Test for name resolution with DefMap shortcut | Jonas Schievink | 2021-02-03 | 1 | -0/+33 |
| | |||||
* | Shortcut `block_def_map` if there's no inner items | Jonas Schievink | 2021-02-03 | 2 | -5/+8 |
| | | | | | This previously didn't work, but apparently only because of the wonky test setup | ||||
* | Use body lowering for block_def_map tests | Jonas Schievink | 2021-02-03 | 2 | -2/+301 |
| | | | | Removes the hacky and buggy custom lowering code | ||||
* | Use block_def_map in body lowering | Jonas Schievink | 2021-02-03 | 1 | -10/+25 |
| | |||||
* | Revert "Use block_def_map in body lowering" | Jonas Schievink | 2021-02-02 | 3 | -326/+12 |
| | |||||
* | Use body lowering for block_def_map tests | Jonas Schievink | 2021-02-01 | 2 | -2/+301 |
| | | | | Removes the hacky and buggy custom lowering code | ||||
* | Use block_def_map in body lowering | Jonas Schievink | 2021-02-01 | 1 | -10/+25 |
| | |||||
* | add more counts | Aleksey Kladov | 2021-01-27 | 1 | -0/+2 |
| | |||||
* | Add test for path resolution bug | Jonas Schievink | 2021-01-21 | 1 | -8/+33 |
| | |||||
* | Revert "Make use of `block_def_map` in body lowering" | Jonas Schievink | 2021-01-21 | 1 | -12/+4 |
| | |||||
* | Make use of `block_def_map` in body lowering | Jonas Schievink | 2021-01-21 | 1 | -4/+12 |
| | | | | | Removes the `local_scope` hack from `Expander` in favor of tracking the `DefMap` in use during body lowering | ||||
* | Add support for yiled keyword | Daiki Ihara | 2021-01-15 | 1 | -0/+4 |
| | |||||
* | prepare to publish el libro de arena | Aleksey Kladov | 2021-01-14 | 2 | -2/+2 |
| | |||||
* | Fixed typos in code comments | Vincent Esche | 2021-01-09 | 1 | -2/+2 |
| | |||||
* | Change <|> to $0 - Rebase | Kevaundray Wedderburn | 2021-01-07 | 1 | -15/+15 |
| | |||||
* | Rename expr -> tail_expr | Aleksey Kladov | 2021-01-05 | 1 | -1/+1 |
| | |||||
* | Merge #7021 | bors[bot] | 2020-12-24 | 1 | -47/+45 |
|\ | | | | | | | | | | | | | | | 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 | -47/+45 |
| | | |||||
* | | Implement const block inference | Lukas Wirth | 2020-12-23 | 1 | -0/+4 |
| | | |||||
* | | Implement const pat inference | Lukas Wirth | 2020-12-23 | 1 | -3/+9 |
|/ | |||||
* | Update ungrammar for const block patterns | Lukas Wirth | 2020-12-23 | 1 | -1/+3 |
| | |||||
* | Refactor attributes API to allow handling cfg_attr | Jonas Schievink | 2020-12-18 | 1 | -1/+1 |
| | |||||
* | Node-ify lifetimes | Lukas Wirth | 2020-12-16 | 1 | -17/+7 |
| | |||||
* | Make macro def krate mandatory | Jonas Schievink | 2020-12-15 | 1 | -1/+1 |
| | | | | Refactors builtin derive support to go through proper name resolution | ||||
* | Basic support for decl macros 2.0 | Jonas Schievink | 2020-12-15 | 1 | -1/+4 |
| | |||||
* | Move to upstream `macro_rules!` model | Jonas Schievink | 2020-12-15 | 1 | -65/+69 |
| | |||||
* | Expand statements for mbe in lowering | Edwin Cheng | 2020-12-15 | 1 | -82/+134 |
| | |||||
* | Add test for `$crate` in builtin macros | Jonas Schievink | 2020-12-08 | 1 | -0/+28 |
| | | | | Fixes #6716 | ||||
* | Make `compile_error!` message match upstream rustc | Jonas Schievink | 2020-12-03 | 1 | -1/+1 |
| | | | | It only consists of the argument passed to it | ||||
* | Make `compile_error!` lazy and emit a diagnostic | Jonas Schievink | 2020-12-03 | 1 | -0/+6 |
| | |||||
* | Give better diagnostic if `OUT_DIR` is unset | Jonas Schievink | 2020-12-03 | 1 | -0/+3 |
| | |||||
* | Update/Fix tests | Jonas Schievink | 2020-12-03 | 1 | -4/+15 |
| | |||||
* | Test macro diagnostics in body lowering | Jonas Schievink | 2020-12-02 | 1 | -0/+41 |
| | |||||
* | Attach macro expansion errors to the right file | Jonas Schievink | 2020-12-02 | 1 | -2/+5 |
| | |||||
* | Emit unresolved proc macro errors | Jonas Schievink | 2020-12-01 | 2 | -9/+28 |
| | |||||
* | Emit macro diagnostics when lowering bodies | Jonas Schievink | 2020-11-30 | 2 | -3/+17 |
| | |||||
* | Cleanup API | Aleksey Kladov | 2020-11-06 | 1 | -10/+11 |
| | |||||
* | Remove more unreachable pubs | Aleksey Kladov | 2020-11-02 | 1 | -2/+2 |
| | |||||
* | Deny unreachable-pub | Aleksey Kladov | 2020-11-02 | 1 | -3/+3 |
| | | | | | | | | It's very useful when `pub` is equivalent to "this is crate's public API", let's enforce this! Ideally, we should enforce it for local `cargo test`, and only during CI, but that needs https://github.com/rust-lang/cargo/issues/5034. | ||||
* | Diagnose #[cfg]s in bodies | Jonas Schievink | 2020-10-23 | 3 | -14/+141 |
| | |||||
* | Fix `mut self` not emitting mutable binding on `self` use | Lukas Wirth | 2020-10-11 | 1 | -1/+4 |
| | |||||
* | 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]> |