aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Infer box expressionuHOOCCOOHu2019-09-117-4/+107
|
* Merge #1796bors[bot]2019-09-1110-8/+334
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1796: Support completion for macros r=matklad a=uHOOCCOOHu This is based on #1795 , and fixes #1727 Also prettify hover text of macros. Some screenshorts below: Completion in item place. <img width="416" alt="Screenshot_20190910_134056" src="https://user-images.githubusercontent.com/14816024/64587159-fa72da00-d3d0-11e9-86bb-c98f169ec08d.png"> After pressing `tab`. <img width="313" alt="Screenshot_20190910_134111" src="https://user-images.githubusercontent.com/14816024/64587160-fa72da00-d3d0-11e9-9464-21e3f6957bd7.png"> Complete macros from `std`. <img width="588" alt="Screenshot_20190910_134147" src="https://user-images.githubusercontent.com/14816024/64587161-fb0b7080-d3d0-11e9-866e-5161f0d1b546.png"> Hover text. <img width="521" alt="Screenshot_20190910_134242" src="https://user-images.githubusercontent.com/14816024/64587162-fb0b7080-d3d0-11e9-8f09-ad17e3f6702a.png"> Co-authored-by: uHOOCCOOHu <[email protected]>
| * Split out `complete_macro_in_item_position`uHOOCCOOHu2019-09-113-37/+52
| |
| * Fix typouHOOCCOOHu2019-09-114-4/+4
| |
| * Show macro definition in hover textuHOOCCOOHu2019-09-101-3/+21
| |
| * Support completion for macrosuHOOCCOOHu2019-09-104-2/+295
| |
* | Merge #1797bors[bot]2019-09-112-12/+11
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1797: Use VSCode fs API's in extension r=matklad a=LDSpits This will close #1670. I've replaced the `CargoWatcher`s `Cargo.toml` check with a version that uses the `fs` API of vscode. While making this I've identified an issue with the detection of the `cargo.toml`, we can only load projects where the cargo.toml is in the root of the workspace. but that's a separate issue 😄 Co-authored-by: Lucas Spits <[email protected]>
| * | Update minimal required vscode version to 1.37Lucas Spits2019-09-101-1/+1
| | |
| * | Replace watcher file existence check with vscode.fs versionLucas Spits2019-09-091-11/+10
| | |
* | | Merge #1812bors[bot]2019-09-111-1/+3
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1812: clarify sublime instructions r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | clarify sublime instructionsAleksey Kladov2019-09-111-1/+3
| | | | | | | | | | | | | | | | closes #1811
* | | | Merge #1810bors[bot]2019-09-108-130/+62
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | 1810: cleanup dollar handling in expressions r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | cleanup expansion to item listAleksey Kladov2019-09-105-34/+11
| | | |
| * | | cleanup dollar handling in expressionsAleksey Kladov2019-09-103-96/+51
|/ / /
* | | Merge #1806bors[bot]2019-09-107-114/+297
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1806: refactor(args): Switch to pico-args r=matklad a=Geobert Fixes https://github.com/rust-analyzer/rust-analyzer/issues/1768 Co-authored-by: Geobert Quach <[email protected]>
| * | | refactor(args): Apply commentsGeobert Quach2019-09-104-161/+116
| | | |
| * | | refactor(args): Switch to pico-args in ra_toolsGeobert Quach2019-09-105-59/+153
| | | |
| * | | refactor(args): Switch to pico-argsGeobert Quach2019-09-104-79/+213
| | |/ | |/|
* | | Merge #1809bors[bot]2019-09-102-52/+35
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1809: add fragmets to expansion r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | | simiplifyAleksey Kladov2019-09-101-25/+2
| | | |
| * | | add fragmets to expansionAleksey Kladov2019-09-102-36/+42
|/ / /
* | | Merge #1801bors[bot]2019-09-1019-337/+497
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 1801: WIP: switch to fully decomposed tokens internally r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | add a jointness parser testsAleksey Kladov2019-09-102-0/+55
| | | | | | | | | | | | cc https://github.com/rust-lang/rust/issues/64242
| * | "Fix" mbe to work with decomposed tokensAleksey Kladov2019-09-106-84/+46
| | | | | | | | | | | | We regressed $i * 2 where $i = 1 + 1, need to fix that!
| * | WIP: switch to fully decomposed tokens internallyAleksey Kladov2019-09-1012-280/+423
|/ /
* | Merge #1803bors[bot]2019-09-0916-132/+138
|\ \ | | | | | | | | | | | | | | | | | | | | | 1803: introduce bump as a better-checked alternative to bump_any r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | introduce bump as a better-checked alternative to bump_anyAleksey Kladov2019-09-092-2/+8
| | |
| * | rename bump -> bump_anyAleksey Kladov2019-09-0916-132/+132
|/ /
* | Merge #1795bors[bot]2019-09-097-239/+393
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1795: Make macro scope a real name scope and fix some details r=matklad a=uHOOCCOOHu This PR make macro's module scope a real name scope in `PerNs`, instead of handling `Either<PerNs, MacroDef>` everywhere. In `rustc`, the macro scope behave exactly the same as type and value scope. It is valid that macros, types and values having exact the same name, and a `use` statement will import all of them. This happened to module `alloc::vec` and macro `alloc::vec!`. So `Either` is not suitable here. There is a trap that not only does `#[macro_use]` import all `#[macro_export] macro_rules`, but also imports all macros `use`d in the crate root. In other words, it just _imports all macros in the module scope of crate root_. (Visibility of `use` doesn't matter.) And it also happened to `libstd` which has `use alloc_crate::vec;` in crate root to re-export `alloc::vec`, which it both a module and a macro. The current implementation of `#[macro_use] extern crate` doesn't work here, so that is why only macros directly from `libstd` like `dbg!` work, while `vec!` from `liballoc` doesn't. This PR fixes this. Another point is that, after some tests, I figure out that _`macro_rules` does NOT define macro in current module scope at all_. It defines itself in legacy textual scope. And if `#[macro_export]` is given, it also is defined ONLY in module scope of crate root. (Then being `macro_use`d, as mentioned above) (Well, the nightly [Declarative Macro 2.0](https://github.com/rust-lang/rust/issues/39412) simply always define in current module scope only, just like normal items do. But it is not yet supported by us) After this PR, in my test, all non-builtin macros are resolved now. (Hover text for documentation is available) So it fixes #1688 . Since compiler builtin macros are marked as `#[rustc_doc_only_macro]` instead of `#[macro_export]`, we can simply tweak the condition to let it resolved, but it may cause expansion error. Some critical notes are also given in doc-comments. <img width="447" alt="Screenshot_20190909_223859" src="https://user-images.githubusercontent.com/14816024/64540366-ac1ef600-d352-11e9-804f-566ba7559206.png"> Co-authored-by: uHOOCCOOHu <[email protected]>
| * | StripuHOOCCOOHu2019-09-092-12/+3
| | |
| * | Make macro scope a real name scopeuHOOCCOOHu2019-09-098-236/+399
| | | | | | | | | | | | Fix some details about module scoping
* | | Merge #1800bors[bot]2019-09-092-16/+8
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1800: make all traits non-enumerable r=flodiebold a=nikomatsakis As discussed on Zulip, this actually matches the present behavior of rustc. r? @flodiebold Co-authored-by: Niko Matsakis <[email protected]>
| * | | modify testsNiko Matsakis2019-09-091-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some method resolution tests now yield `{unknown}` where they did not before. Other tests now succeed, likely because this is helping the solver steer its efforts.
| * | | also make "unknown" case non-enumerableNiko Matsakis2019-09-091-1/+1
| | | |
| * | | make all traits non-enumerableNiko Matsakis2019-09-091-9/+1
| | |/ | |/| | | | | | | | | | As discussed on Zulip, this actually matches the present behavior of rustc.
* | | Merge #1799bors[bot]2019-09-091-75/+5
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 1799: :arrow_up: chalk r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | :arrow_up: chalkAleksey Kladov2019-09-091-75/+5
|/ /
* | Merge #1789bors[bot]2019-09-0912-19/+186
|\ \ | | | | | | | | | | | | | | | | | | | | | 1789: Debug r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | document moduleAleksey Kladov2019-09-092-8/+27
| | |
| * | introduce hir debugging infraAleksey Kladov2019-09-0911-18/+166
| |/ | | | | | | | | | | | | | | | | | | | | | | This is to make debugging rust-analyzer easier. The idea is that `dbg!(krate.debug(db))` will print the actual, fuzzy crate name, instead of precise ID. Debug printing infra is a separate thing, to make sure that the actual hir doesn't have access to global information. Do not use `.debug` for `log::` logging: debugging executes queries, and might introduce unneded dependencies to the crate graph
* | Merge #1794bors[bot]2019-09-094-5/+8
|\ \ | |/ |/| | | | | | | | | | | 1794: tiny simplification r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * tiny simplificationAleksey Kladov2019-09-094-5/+8
|/
* Merge #1793bors[bot]2019-09-093-2/+44
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1793: Fix outer doc-comments of `macro_rules` r=matklad a=uHOOCCOOHu Document comments of `macro_rules!` is currently parsed outside the `MACRO_CALL` node, which makes `DocCommentsOwner::doc_comments()` always empty. For the input: ```rust /// Some docs macro_rules! foo { () => {}; } ``` Current parsing tree is: ``` SOURCE_FILE COMMENT // <- This should be children of MACRO_CALL WHITESPACE MACRO_CALL PATH <...omitted...> ``` It should be: ``` SOURCE_FILE MACRO_CALL COMMENT WHITESPACE PATH <...omitted...> ``` Co-authored-by: uHOOCCOOHu <[email protected]>
| * Fix outer doc-comments of `macro_rules`uHOOCCOOHu2019-09-093-2/+44
| |
* | Merge #1784bors[bot]2019-09-095-42/+229
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1784: Support textual scoped macros r=matklad a=uHOOCCOOHu Refactor the old simulation with `global_macro_scope`. Now it is quite accurate to resolve textual scoped macros. - Expand textual scoped macros in item and non-item place. - Support `#[macro_use]` on `mod`. - Textual scoped macros are collected into `nameres::ModuleScope`, so I think it makes #1727 easier to fix. - It is implemented in a simple way to `clone()` current scoped macro ids into sub-modules. Though only indices are cloned, it will still increase some resolving time. Well, I've not bench-marked yet. In my test with vscode extension, it can now successfully expand `dbg!` from `std` without `std::` prefix. "Goto definition" also works. Screenshot here: <img width="281" alt="Screenshot_20190907_043442" src="https://user-images.githubusercontent.com/14816024/64458794-ddb47900-d128-11e9-95e3-1c8569978825.png"> Co-authored-by: uHOOCCOOHu <[email protected]>
| * | Fix testuHOOCCOOHu2019-09-081-3/+0
| | |
| * | Rename `textual_macro` -> `legacy_macro`uHOOCCOOHu2019-09-084-29/+39
| | | | | | | | | | | | Add comments
| * | Revert "Replace with immutable map to avoid heavy cloning"uHOOCCOOHu2019-09-084-36/+2
| | | | | | | | | | | | | | | | | | This reverts commit 2c494eb803c88ef5d23607c3b156fce60c2b8076. See: https://github.com/rust-analyzer/rust-analyzer/pull/1784#issuecomment-529119924
| * | Replace with immutable map to avoid heavy cloninguHOOCCOOHu2019-09-084-2/+36
| | |
| * | Resolve textual scoped macros inside itemuHOOCCOOHu2019-09-084-9/+65
| | |