Commit graph

122 commits

Author SHA1 Message Date
Aleksey Kladov
5270bca5f7 store macro def inside macro id
This solves the problem of "macro expansion can't call into name
resolution, because name resolution calls back into macro expansion"

Because we store macro def as a part of call id, macro expansion just
knows the def!
2019-03-26 13:20:54 +03:00
Florian Diebold
c947c15ce1 Basics for trait method resolution 2019-03-25 21:28:36 +01:00
Aleksey Kladov
7ee2887d1e fixes 2019-03-25 10:52:50 +03:00
Aleksey Kladov
45fbab2b1a check impls as well 2019-03-25 10:52:50 +03:00
Aleksey Kladov
79df62bc74 cleanup 2019-03-25 10:52:50 +03:00
Aleksey Kladov
3fb88e95aa switch modules to new diagnostics 2019-03-25 10:52:50 +03:00
Aleksey Kladov
3f0cf6ebe1 rename persistent hir database -> def database 2019-03-23 15:44:24 +03:00
Aleksey Kladov
4fd8cfd6ad replace todo with fixme 2019-03-23 11:07:09 +03:00
Aleksey Kladov
3a77023365 docs 2019-03-17 12:53:22 +03:00
Aleksey Kladov
6955e392f8 remove old macro support 2019-03-17 12:53:22 +03:00
Aleksey Kladov
ee3cf6172b rename ModuleId -> CrateModuleId 2019-03-17 12:53:22 +03:00
Aleksey Kladov
0d6b8baa89 log time 2019-03-17 12:53:22 +03:00
Aleksey Kladov
967a4b64af Reorganize name resolution 2019-03-17 12:53:22 +03:00
Aleksey Kladov
c7259a899c remove ItemMap 2019-03-17 12:52:05 +03:00
Aleksey Kladov
71e5adf694 move tests over to crate-def-map 2019-03-17 12:49:07 +03:00
Aleksey Kladov
2195d1db6d Replace module_tree with CrateDefMap 2019-03-17 12:49:07 +03:00
Aleksey Kladov
0d8d918656 add skeleton for macro-aware name resolutions 2019-03-17 12:46:13 +03:00
Aleksey Kladov
80bb7d86ec align lower module query names 2019-03-02 16:49:06 +03:00
Florian Diebold
6a04d1f292 Fix resolution of associated method calls across crates
I think it'll be better to make the path resolution the number of unresolved
segments, not the first unresolved index; then this error could simply not have
happened. But I'll do that separately.
2019-02-23 12:37:29 +01:00
Ville Penttinen
a34eb98a78 Make nameres::ResolvePathResult private and refactor 2019-02-22 00:11:21 +02:00
Ville Penttinen
2e7bc905be Remove Const inference for now, refactor PathResult 2019-02-21 23:57:07 +02:00
Ville Penttinen
816971ebc9 Implement basic support for Associated Methods and Constants
This is done in `infer_path_expr`. When `Resolver::resolve_path` returns
`PartiallyResolved`, we use the returned `Resolution` together with the given
`segment_index` to check if we can find something matching the segment at
segment_index in the impls for that particular type.
2019-02-21 12:25:55 +02:00
Florian Diebold
b82db68400 Handle tuple structs / enum variants properly in type inference 2019-02-17 20:53:13 +01:00
Florian Diebold
911e32bca9 Complete names from prelude 2019-02-13 21:13:08 +01:00
Florian Diebold
92c595a6a6 Handle extern crates better, so they work correctly in 2015 edition
(see the removed comment.)
2019-02-13 21:13:08 +01:00
Florian Diebold
d5ad38cbb8 Resolve 2015 style imports 2019-02-13 20:10:46 +01:00
Florian Diebold
1526eb25c9 Import the prelude 2019-02-13 20:10:09 +01:00
Pascal Hertleif
4fd3613434 Fix some typos 2019-02-12 15:02:57 +01:00
Aleksey Kladov
8cafdb3a99 rename combine -> or
This way we match API of Option

https://doc.rust-lang.org/std/option/enum.Option.html#method.or
2019-02-11 17:29:20 +03:00
Aleksey Kladov
58ed8ee665 use extern prelude in Resolver
This fixes two bugs:

- completion for paths works again
- we handle extern prelude shadowing more correctly
2019-02-11 15:41:39 +03:00
Florian Diebold
2f24e740db Implement glob imports within the same crate
Fixes #231.
2019-02-10 16:48:29 +01:00
Florian Diebold
2e1d739a80 Import glob imports from other crates
This is the easy part since we don't have to consider the fixpoint algorithm.
2019-02-10 16:20:01 +01:00
Florian Diebold
c1e295682e Implement glob imports from enums 2019-02-10 16:20:01 +01:00
Aleksey Kladov
12e3b4c70b reformat the world 2019-02-08 14:49:43 +03:00
Florian Diebold
de4c5e381f Fix ReachedFixedPoint value for unresolved external prelude items 2019-02-04 23:26:25 +01:00
Florian Diebold
699ce06ac3 Complete extern prelude (again) 2019-02-04 22:09:56 +01:00
Florian Diebold
1056b480d6 Make extern crates in the root module add to the extern prelude
To accomplish this, separate the extern prelude from the per-module item maps.
2019-02-04 21:49:34 +01:00
Florian Diebold
d8ef8acb47 Use aliases in import resolution 2019-02-02 00:23:59 +01:00
Florian Diebold
d3df80dfe4 Cleanup 2019-02-01 22:54:21 +01:00
Florian Diebold
33ff7b56ff Use the new Resolver API in completion 2019-02-01 22:45:25 +01:00
Florian Diebold
6b076f1931 Use new Resolver API in type inference 2019-02-01 22:45:23 +01:00
Florian Diebold
5208c2aa93 Sketching the resolver API 2019-02-01 22:14:34 +01:00
csmoe
4dffdcf14a split HirDatabase api 2019-02-01 22:05:24 +08:00
Aleksey Kladov
ef7eb8c257 Use Crate instead of CrateId 2019-01-30 22:37:20 +03:00
Aleksey Kladov
95aa7e46fc move item_map_query 2019-01-30 22:36:22 +03:00
Aleksey Kladov
a128075af9 remove Option<SourceFileItemId> hack 2019-01-26 23:27:01 +03:00
Aleksey Kladov
54f30bb6d8 nicer behavior in case of bugs
We should always reach a fixed point, but if we fail, let's fail
loudly!
2019-01-25 23:13:07 +03:00
Aleksey Kladov
87288d802c pack enum variants into arena 2019-01-25 12:50:46 +03:00
Aleksey Kladov
0707f65806 drop obsolete fixme 2019-01-25 10:31:45 +03:00
Aleksey Kladov
3b45ddd984 deglobify 2019-01-25 10:29:55 +03:00
Aleksey Kladov
74beb5bfcb simplify 2019-01-25 10:29:00 +03:00
Aleksey Kladov
b90b90cb95 fix comment 2019-01-25 10:17:50 +03:00
Aleksey Kladov
bc77f91cf6 rename def_id -> def 2019-01-25 10:16:28 +03:00
Aleksey Kladov
e884ab05c2 write path resolution code only once 2019-01-25 10:15:10 +03:00
Aleksey Kladov
857c35ddb0 refactor import resolution
extract path resolution
use enums instead of bools
2019-01-25 10:08:21 +03:00
Aleksey Kladov
3ab1519cb2 Change ids strategy
this is a part of larghish hir refactoring which aims to

* replace per-source-root module trees with per crate trees
* switch from a monotyped DedId to type-specific ids
2019-01-24 13:29:19 +03:00
Aleksey Kladov
59f830d3e8 assign DefIds when lowering 2019-01-23 19:49:11 +03:00
gfreezy
13d2fd32ab fix completion bugs 2019-01-23 15:43:47 +08:00
Florian Diebold
5862542ded Add AST/HIR for type args in path segments 2019-01-19 16:02:06 +01:00
Aleksey Kladov
63f7dadc11 rename LoweredImport -> ImportId 2019-01-19 15:37:25 +03:00
Aleksey Kladov
c0aeb5204c switched to lowerd module 2019-01-19 15:37:25 +03:00
Aleksey Kladov
789772e8e5 move input module items to the lower module 2019-01-19 15:37:25 +03:00
Aleksey Kladov
490112dea1 remove Cancelable from nameres 2019-01-15 19:15:01 +03:00
Aleksey Kladov
8af9a18660 remove Cancelable from Crate API 2019-01-15 18:33:26 +03:00
Aleksey Kladov
fedd320cf2 check_canceled does not return Result 2019-01-15 15:45:48 +03:00
Marcus Klaas de Vries
0b8fbb4fad Fix typos in ARCHITECTURE.md and a number of crates
specifically: gen_lsp_server, ra_arena, ra_cli, ra_db, ra_hir
2019-01-09 01:17:09 +01:00
Florian Diebold
946b0ba02c Fix name resolution across source roots
It was using the wrong name in that case.
2019-01-08 15:16:24 +01:00
bors[bot]
3bb1cb7017 Merge #455
455: Import fixpoint loop for name resolution r=matklad a=flodiebold

This implements reexports, so only the glob import part of #231 remains.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-08 12:02:06 +00:00
Florian Diebold
dc186c0fcc Import fixpoint loop for name resolution 2019-01-08 12:53:31 +01:00
Aleksey Kladov
da0b348ae9 migrate ra_hir to rowan 2.0 2019-01-08 11:28:42 +03:00
Aleksey Kladov
8a3b489c2f kill module source 2019-01-06 20:01:26 +03:00
Aleksey Kladov
fd4456d0ec flatten module structure 2019-01-06 17:36:10 +03:00
Renamed from crates/ra_hir/src/module/nameres.rs (Browse further)