Commit Graph

5006 Commits

Author SHA1 Message Date
uHOOCCOOHu
40f9134159
Make macro scope a real name scope
Fix some details about module scoping
2019-09-09 20:54:02 +08:00
bors[bot]
76f39b4b20
Merge #1794
1794: tiny simplification r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-09 10:24:27 +00:00
Aleksey Kladov
7910202ecd tiny simplification 2019-09-09 13:23:41 +03:00
Aleksey Kladov
ef2b84ddf1 introduce hir debugging infra
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
2019-09-09 12:32:16 +03:00
bors[bot]
734a43e95a
Merge #1793
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 <hooccooh1896@gmail.com>
2019-09-09 08:45:00 +00:00
bors[bot]
1db08a54c2
Merge #1784
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 <hooccooh1896@gmail.com>
2019-09-09 08:04:00 +00:00
bors[bot]
72259b67bf
Merge #1792
1792: Update README.md r=matklad a=fannheyward

fixes base on #1755 reviews

Co-authored-by: Heyward Fann <fannheyward@users.noreply.github.com>
2019-09-09 07:55:36 +00:00
Heyward Fann
e031821594
Update README.md 2019-09-09 12:58:44 +08:00
uHOOCCOOHu
f3cbdb07c5
Fix outer doc-comments of macro_rules 2019-09-09 11:13:14 +08:00
Heyward Fann
a6c3f779a6
Update README.md
fixes base on #1755 reviews
2019-09-09 10:32:15 +08:00
uHOOCCOOHu
9ed21d65fb
Fix test 2019-09-09 01:34:53 +08:00
uHOOCCOOHu
92c07803cc
Rename textual_macro -> legacy_macro
Add comments
2019-09-09 01:34:53 +08:00
uHOOCCOOHu
f7f7c2aff8
Revert "Replace with immutable map to avoid heavy cloning"
This reverts commit 2c494eb803c88ef5d23607c3b156fce60c2b8076.

See: https://github.com/rust-analyzer/rust-analyzer/pull/1784#issuecomment-529119924
2019-09-09 01:34:53 +08:00
uHOOCCOOHu
c90256429b
Replace with immutable map to avoid heavy cloning 2019-09-09 01:34:53 +08:00
uHOOCCOOHu
26b092bd3b
Resolve textual scoped macros inside item 2019-09-09 01:34:53 +08:00
uHOOCCOOHu
e0f305a6bf
Support textual scoped macros 2019-09-09 01:33:28 +08:00
bors[bot]
07e3976f42
Merge #1790
1790: Minor typo fix for ra_assists code doc r=matklad a=nelsonjchen



Co-authored-by: Nelson Chen <crazysim@gmail.com>
2019-09-08 11:43:36 +00:00
Nelson Chen
14585468e2
Minor typo fix for ra_assists code doc 2019-09-08 02:10:53 -07:00
bors[bot]
839035c6be
Merge #1788
1788: cleanup hir db imports r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-08 06:57:49 +00:00
Aleksey Kladov
6021a2a83a cleanup hir db imports 2019-09-08 09:55:12 +03:00
bors[bot]
787f1206a9
Merge #1787
1787: don't cycle when processing macros from prelude in prelude r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-07 18:52:45 +00:00
Aleksey Kladov
bcc9a28734 don't cycle when processing macros from prelude in prelude 2019-09-07 21:47:59 +03:00
bors[bot]
4a89a7c902
Merge #1786
1786: Various minor trait improvements r=matklad a=flodiebold

 - lower bounds on trait definition, i.e. super traits
 - use super traits for associated types
 - use traits from where clauses and their super traits for method resolution
 - lower fn-like paths (i.e. `Fn(X, Y) -> Z`)
 - pass the environment to Chalk in the correct way to make elaboration work, i.e. inferring things like `T: Clone` from `T: Copy`. The clauses need to be wrapped in `FromEnv` clauses for that to work, which I didn't do before.
 - add some tests for closure inference already

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-09-07 15:47:56 +00:00
Florian Diebold
8fb3cab76c Fix crash for super trait cycles 2019-09-07 16:49:57 +02:00
Florian Diebold
9db34eec20 Fix Chalk environments
The clauses need to be wrapped in `FromEnv` clauses for elaboration (i.e.
things like inferring `T: Clone` from `T: Copy`) to work correctly.
2019-09-07 16:30:37 +02:00
Florian Diebold
a1776b27c7 Use traits from where clauses for method resolution
E.g. if we have `T: some::Trait`, we can call methods from that trait without it
needing to be in scope.
2019-09-07 16:30:31 +02:00
Florian Diebold
d21cdf3c99 Lower Fn(X, Y) -> Z paths 2019-09-07 15:13:05 +02:00
Florian Diebold
60bdb66ef2 Lower bounds on trait definition, and resolve assoc types from super traits 2019-09-07 14:31:43 +02:00
Florian Diebold
4ae4d9c311 Add some more tests 2019-09-07 13:35:41 +02:00
bors[bot]
a73b424e3b
Merge #1783
1783: simplify r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 18:57:32 +00:00
Aleksey Kladov
6c11935712 simplify 2019-09-06 21:57:11 +03:00
bors[bot]
3bd99af197
Merge #1781
1781: don't deadlock on shutdown r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 17:59:52 +00:00
Aleksey Kladov
219287a14c don't deadlock on shutdown
Specifically, when we tear down IO threads, we should take care to
dispose connection.

closes #1775
2019-09-06 20:58:21 +03:00
bors[bot]
e365236bfb
Merge #1755
1755: feat(docs): add coc-rust-analyzer r=JeanMertz a=fannheyward



Co-authored-by: Heyward Fann <fannheyward@gmail.com>
2019-09-06 16:34:38 +00:00
bors[bot]
1acd9d5540
Merge #1780
1780: add option to disable notify r=matklad a=matklad

This should help if notify uses 100% of CPU. Put

```
{
    "rust-analyzer.useClientWatching": true,
}
```

into `.vscode/settings.json` (or appropriate config of your editor) to use editor's file watching capabilites instead of notify

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 14:22:00 +00:00
Aleksey Kladov
28df377759 add option to disable notify 2019-09-06 17:21:29 +03:00
bors[bot]
007737a0e7
Merge #1779
1779: minor r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 11:33:37 +00:00
Aleksey Kladov
f477f2516a minor 2019-09-06 14:30:24 +03:00
bors[bot]
2015e8b4d1
Merge #1778
1778: make source_root API more abstract r=matklad a=matklad

bors r+

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 11:23:31 +00:00
Aleksey Kladov
9ae455ea52 make source_root API more abstract 2019-09-06 14:21:11 +03:00
bors[bot]
3bdb456d17
Merge #1777
1777: ⬆️ deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-06 10:48:27 +00:00
Aleksey Kladov
82d4cc2e7b ⬆️ deps 2019-09-06 13:48:06 +03:00
bors[bot]
4576e6597e
Merge #1772
1772: switch to rustc_lexer crate r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-05 20:12:19 +00:00
Aleksey Kladov
7a9d7dd637 switch to rustc_lexer crate 2019-09-05 23:07:17 +03:00
bors[bot]
419eec3d2f
Merge #1771
1771: Further tweak for macro_use on extern crate r=matklad a=uHOOCCOOHu

Some more tweaks to #1743 to behave more like `rustc`
1. Hoist macros from `#[macro_use] extern crate`, so that they can be used before `extern crate`.
2. Implicit `#[macro_use]` for `prelude` if exists


Co-authored-by: uHOOCCOOHu <hooccooh1896@gmail.com>
2019-09-05 19:50:06 +00:00
bors[bot]
c705fff309
Merge #1770
1770: rename test file to match impl file r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-05 18:54:20 +00:00
bors[bot]
9856096a80
Merge #1769
1769: fix renaming of modules r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-05 18:46:14 +00:00
Aleksey Kladov
5a38a80d1a rename test file to match impl file 2019-09-05 21:43:32 +03:00
Aleksey Kladov
33965f0f3e fix renaming of modules 2019-09-05 21:36:40 +03:00
Aleksey Kladov
3e5f7299e1 move mod resolution to a separate file 2019-09-05 20:27:10 +03:00