Commit graph

560 commits

Author SHA1 Message Date
csmoe
12433a7887 split hirdatabase 2019-02-01 21:36:51 +08:00
Aleksey Kladov
de85f1e947 remove hard-coded support for ctry macro
It was used mainly to prevent HirFileId infra from bitroting, but the
`vec![]` macro can serve that just as well!
2019-02-01 10:52:36 +03:00
kjeremy
f0fdc9d5c0 Go To Implementation for Trait 2019-01-31 18:34:52 -05:00
Aleksey Kladov
2d1f0b105d move test 2019-01-31 22:23:30 +02:00
Aleksey Kladov
40feacdeb9 split macros across crates 2019-01-31 22:23:30 +02:00
Aleksey Kladov
ad80a0c551 preserve token spacing 2019-01-31 22:23:30 +02:00
Aleksey Kladov
5934738854 first test sort-of passes 2019-01-31 22:23:30 +02:00
Aleksey Kladov
ce3636798b move macros to a separate crate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
9a043a163c parses simple macro 2019-01-31 22:23:30 +02:00
Aleksey Kladov
0d9210e9bc handle multibyte tokens 2019-01-31 22:23:30 +02:00
Aleksey Kladov
f3489e8111 add eat methods 2019-01-31 22:23:30 +02:00
Aleksey Kladov
e28a5e048a parsing scaffold 2019-01-31 22:23:30 +02:00
Aleksey Kladov
2980508ad2 debug impls 2019-01-31 22:23:30 +02:00
Aleksey Kladov
82cf0185c3 add repeats to ast 2019-01-31 22:23:30 +02:00
Aleksey Kladov
3bd4560d6e convert punts and literals 2019-01-31 22:23:30 +02:00
Aleksey Kladov
c09c6fc97c start tt convertions boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
a4342a7fee add conversion boilerplate 2019-01-31 22:23:30 +02:00
Aleksey Kladov
ca327f35ad add macro by example ide 2019-01-31 22:23:30 +02:00
Aleksey Kladov
6846ac2a16 shorten name :-) 2019-01-31 22:23:30 +02:00
Aleksey Kladov
b8f56f89c6 start token tree module 2019-01-31 22:23:30 +02:00
bors[bot]
28fdb8d03c Merge #701
701: Minor type inference tweaks r=flodiebold a=marcusklaas

Pass down expectation for reference expressions and type the guard in match expressions.

I wasn't able to add a test for the former addition because the type variable previously introduced would always resolve to the right type in the things I tried!

Co-authored-by: Marcus Klaas de Vries <mail@marcusklaas.nl>
2019-01-30 20:51:47 +00:00
Florian Diebold
1acff307fe Move expr_scopes query to its module 2019-01-30 21:39:34 +01:00
Florian Diebold
65864d85f9 Rename FnScopes -> ExprScopes
The reason for this is that it describes scopes for any body expression, not
just that of a function. It did not actually refer to functions at all anymore.
2019-01-30 21:23:50 +01:00
Marcus Klaas de Vries
13cb4a1b37 Add test for passing on ref expectations 2019-01-30 21:14:26 +01: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
kjeremy
04eb15856b Resolve crate 2019-01-30 13:18:21 -05:00
Jeremy Kolb
3c17643b30 Go to Implementation for structs and enums 2019-01-29 19:13:02 -05:00
Marcus Klaas de Vries
3daca3eb4d Infer type of match guard 2019-01-28 23:09:14 +01:00
WizardOfMenlo
ec32b2e39c Use match-all instead of individual branches 2019-01-28 17:17:04 +00:00
WizardOfMenlo
9416904d14 Added support for primitive types type inference when using std::ops::Not 2019-01-28 14:52:43 +00:00
Marcus Klaas de Vries
6249989e6c Process second review 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
f6eb44cd9e Use type information from the turbofish 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
0da1e8b2f8 Add a FnSig to Ty::FnDef 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
089b1c57c1 Address some issues flagged in review 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
04748a0f16 Add missing ty test snapshot 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
aa06893a14 Add type params to FnSignature 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
67e40e431a Initial implementation of generics for method calls 2019-01-27 17:59:21 +01:00
Marcus Klaas de Vries
3bd47c0285 First attempt at generic type inference for fns 2019-01-27 17:59:21 +01:00
Erlend Tobiassen
b775fa285c
Revert parts of "Test non standard crate root"
Prefer cursor position over file_map
2019-01-27 16:32:31 +01:00
Erlend Tobiassen
b149882d19
Remove dbg!(...) 2019-01-27 15:44:59 +01:00
Erlend Tobiassen
08e12f974c
Fix bad rebase and rustfmt 2019-01-27 15:37:43 +01:00
Erlend Tobiassen
c5e6db16b1
fix #668 2019-01-27 15:19:38 +01:00
Erlend Tobiassen
683e5e64f4
Test non standard crate root 2019-01-27 15:15:56 +01:00
bors[bot]
ffcf618842 Merge #662
662: Preserve indentation in doc comments r=matklad a=kjeremy

Fixes #502 

Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-01-27 08:21:04 +00:00
Florian Diebold
94bbb2418a Add marks 2019-01-26 23:59:11 +01:00
Florian Diebold
77f92674f9 Handle cycles in type vars
This might be the cause of #587.
2019-01-26 23:48:01 +01:00
bors[bot]
e40d8d4032 Merge #683
683: fix AST for if expressions r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-26 21:41:27 +00:00
Aleksey Kladov
619af1e22c fix AST for if expressions
then is not always a block...
2019-01-27 00:37:11 +03:00
Aleksey Kladov
a128075af9 remove Option<SourceFileItemId> hack 2019-01-26 23:27:01 +03:00
Aleksey Kladov
9c1a18a626 store syntax ptr in FileItems
we cache the tree in file_item query anyway
2019-01-26 22:48:04 +03:00
Aleksey Kladov
ae97a45c35 remove dead code 2019-01-26 22:43:07 +03:00
Jeremy Kolb
a892067951 Make doc comments optional 2019-01-26 10:35:23 -05:00
Aleksey Kladov
9457b1f0e6 rename source_file -> parse 2019-01-26 11:51:36 +03:00
Aleksey Kladov
4711cbcace rename FilesDatabase -> SourceDatabase 2019-01-26 11:20:30 +03:00
Aleksey Kladov
3223de5976 move ide queries to ide db 2019-01-26 11:17:05 +03:00
Aleksey Kladov
be1a005ebd fold syntax database into files database 2019-01-26 11:09:39 +03:00
Aleksey Kladov
23172a116c rename POS_FIELD -> POS_FIELD_DEF
to match NAMED_FIELD_DEF
2019-01-26 00:24:12 +03:00
bors[bot]
3c7acecade Merge #656
656: :arrow_up deps r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 20:43:09 +00:00
bors[bot]
d0ddc5a7c1 Merge #655
655: Fix type inference of binops on int/float variables r=matklad a=flodiebold

Fixes #651.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-01-25 20:36:56 +00:00
Florian Diebold
5a1385007c Fix type inference of binops on int/float variables
Fixes #651.
2019-01-25 21:32:49 +01:00
Aleksey Kladov
1fd18f020d ⬆️ salsa 2019-01-25 23:27:16 +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
Jeremy A. Kolb
7a0bc2dd64 Add docs to struct fields 2019-01-25 14:29:56 -05:00
Aleksey Kladov
f0c6a040bd remove dead code 2019-01-25 21:14:41 +03:00
bors[bot]
cc73d3ccbc Merge #646
646: Add module documentation support r=matklad a=kjeremy



Co-authored-by: Jeremy A. Kolb <jkolb@ara.com>
2019-01-25 17:55:29 +00:00
Jeremy A. Kolb
6588579116 Add module documentation support 2019-01-25 12:51:36 -05:00
Aleksey Kladov
9f2574c97e add ability to get strcut field source 2019-01-25 20:38:03 +03:00
Aleksey Kladov
0044514a4e remember where fields resolve to during inference 2019-01-25 20:02:53 +03:00
bors[bot]
021e691997 Merge #639
639: Update salsa r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-01-25 12:34:10 +00:00
Aleksey Kladov
08c12e424d use set methods 2019-01-25 15:25:01 +03:00
Aleksey Kladov
8cf092d5de :arrow_up salsa 2019-01-25 15:16:50 +03:00
Aleksey Kladov
64d4f42558 reduce visibility 2019-01-25 14:25:30 +03:00
Aleksey Kladov
87ac5f5b36 use positional ids for fields 2019-01-25 14:21:14 +03:00
Aleksey Kladov
47e5536678 rename struct field -> struct field data 2019-01-25 12:58:01 +03:00
Aleksey Kladov
87288d802c pack enum variants into arena 2019-01-25 12:50:46 +03:00
Aleksey Kladov
2ee2fba752 switch to positional enum variants 2019-01-25 11:35:38 +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
ed27bd8d77 remove useless wrapper 2019-01-25 10:20:35 +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
31d3a56b18 move adt to adt 2019-01-25 01:53:07 +03:00
Aleksey Kladov
a03c109f50 Kill DefId 2019-01-25 01:41:36 +03:00
Aleksey Kladov
1ccf73c836 kill DefKindc 2019-01-25 01:38:21 +03:00
Aleksey Kladov
ff9c5bef7b ModuleDef is Def-free 2019-01-25 01:32:47 +03:00
Aleksey Kladov
0f2f3a21e7 Migrate trait & type to new ids 2019-01-25 01:31:32 +03:00
Aleksey Kladov
00ba70a095 generalize 2019-01-25 01:05:50 +03:00
Aleksey Kladov
1db2cbcb8b move consts&statics to new id 2019-01-25 00:50:08 +03:00
Aleksey Kladov
f588535273 remove boilerplate 2019-01-25 00:32:37 +03:00
Aleksey Kladov
90215eb5a0 generalize boilerplate 2019-01-25 00:02:18 +03:00
Aleksey Kladov
1a5f32fcb5 remove dead code 2019-01-24 23:46:48 +03:00
Aleksey Kladov
f3a37522a0 removed untyped typabledef 2019-01-24 23:39:39 +03:00
Aleksey Kladov
6a5a1f5902 adapt ide_api to the new API 2019-01-24 23:36:16 +03:00
Aleksey Kladov
4c514a3e02 move enum variant to the new API 2019-01-24 23:32:41 +03:00
Aleksey Kladov
11dda8a0fb remove useless aliases 2019-01-24 19:29:44 +03:00
Aleksey Kladov
a7c0336a75 macro-generate froms 2019-01-24 19:16:25 +03:00
Aleksey Kladov
ce2041252a kill unused defs 2019-01-24 18:57:38 +03:00
Aleksey Kladov
566c8e321e migrate enums to new id 2019-01-24 18:56:38 +03:00
Aleksey Kladov
cefc5cbb4a introduce EnumId 2019-01-24 17:56:00 +03:00
Aleksey Kladov
60a607d33f new struct id 2019-01-24 17:54:18 +03:00
Aleksey Kladov
c57a857988 add StructId 2019-01-24 16:18:20 +03:00
Aleksey Kladov
1754dd9fdd remove DefKind::Function 2019-01-24 15:31:12 +03:00
Aleksey Kladov
ec7ed054e0 Functions use new id scheme 2019-01-24 15:28:50 +03:00
Aleksey Kladov
f1959bbae0 add FunctionId 2019-01-24 13:34:41 +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
9fe09db771 encapsulate hir locations 2019-01-24 12:41:08 +03:00
Jeremy Kolb
f87ce73579 Add a comment 2019-01-23 20:13:36 -05:00
Jeremy A. Kolb
7b548de634 Add a bunch of new documentation to completions 2019-01-23 17:46:14 -05:00
Jeremy A. Kolb
576625f0a1 Add way of getting docs from the code model and use for completion 2019-01-23 16:32:04 -05:00
Aleksey Kladov
bea75e0943 drop obsolete comment 2019-01-23 20:45:32 +03:00
Aleksey Kladov
59f830d3e8 assign DefIds when lowering 2019-01-23 19:49:11 +03:00
Aleksey Kladov
d4ed25d86f introduced better typed AstPtr 2019-01-23 18:26:02 +03:00
Aleksey Kladov
e22b6edae5 refactor 2019-01-23 18:09:45 +03:00
Aleksey Kladov
343852d8b2 simiplify 2019-01-23 17:57:41 +03:00
Aleksey Kladov
d853e9b1ef better names 2019-01-23 17:52:35 +03:00
Aleksey Kladov
7b901f86cd move SyntaxPtr to ra_syntax 2019-01-23 17:37:10 +03:00
Aleksey Kladov
2dbf58c579 move completion item tests closer to the code
this is the reason why we need marks: the tests were spread across two
files, because I've forgotten that there were tests already
2019-01-23 16:05:13 +03:00
Aleksey Kladov
45da21672a generalize marking infrastructure 2019-01-23 15:36:29 +03:00
Aleksey Kladov
28661facf6 ⬆️ insta 2019-01-23 15:04:38 +03:00
gfreezy
13d2fd32ab fix completion bugs 2019-01-23 15:43:47 +08:00
Jeremy A. Kolb
7c27e6d2b3 Update snaps 2019-01-22 09:51:29 -05:00
Jeremy Kolb
b540451483 Move docs to Function 2019-01-22 08:55:05 -05:00
Jeremy Kolb
b77d780f0e Thread documentation through FnSignature and CompletionItem 2019-01-21 21:42:37 -05:00
Aleksey Kladov
49596bbc2b ⬆️ insta 2019-01-22 01:28:57 +03:00
Florian Diebold
a252110616 Use insta for ty tests 2019-01-21 22:52:35 +01:00
Florian Diebold
e45f476d56 Fix panic trying to get substs on unknown type
Fixes #585.
2019-01-21 21:42:19 +01:00
Florian Diebold
3c4a4c6ae9 Fix panic on inferring field access on an enum 2019-01-20 18:14:19 +01:00
Florian Diebold
5f3509e140 Add an assert 2019-01-19 19:00:36 +01:00
Florian Diebold
969f588025 Generics -> GenericParams 2019-01-19 18:58:04 +01:00
Florian Diebold
9e4b5ecec4 Make generics work in struct patterns 2019-01-19 16:02:06 +01:00
Florian Diebold
d37bb128ef Collect generic args in struct variant paths as well 2019-01-19 16:02:06 +01:00
Florian Diebold
cc4562ab6e Collect generic args in type paths
E.g. `let x: A<X>` is handled correctly.
2019-01-19 16:02:06 +01:00
Florian Diebold
fa7f9d696f Make Module impl methods crate-private, update some comments 2019-01-19 16:02:06 +01:00
Florian Diebold
5862542ded Add AST/HIR for type args in path segments 2019-01-19 16:02:06 +01:00
Florian Diebold
688a45e00b Implement beginnings of generics
- add HIR for generic params
 - resolve generic params in type paths
 - add substitions for ADTs
 - insert type variables for substitutions
2019-01-19 16:02:06 +01:00
Florian Diebold
415cdc5210 Add some tests 2019-01-19 15:49:48 +01:00
Florian Diebold
573f6f8656 Refactor/simplify path resolution 2019-01-19 14:48:07 +01:00
Marcus Klaas de Vries
fa43ef30f4 Change parsing of struct field patterns 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
bcbfa2cc11 Finish move of StructField for pattern type inference 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
4277f420aa Replace Expectation by &Ty in infer_pat method 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
f9a6050034 Move parsing of field pattern lists to the parser (where it belongs) 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
d2769837f1 Move pattern type inference from adt::StructField to core_model_impl (WIP) 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
b5466f3fb3 Address issues flagged in review 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
5027c5d4ee Fix bug in match arm type unification 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
44e9a9605b Fixup annotated bindings 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
d48d5b8b6c Add initial (flawed) implementation of binding annotations 2019-01-19 15:37:26 +03:00
Marcus Klaas de Vries
9433a108cf Make pattern inference work w/o proper expecations 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
be1b4034a5 Infer pattern types for lambdas and loops 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
06d16a18f6 Implement match binding type inference and arm unification 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
ac216880f5 Implement unlabeled struct field pattern inference 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
3340807bd2 Get basic struct pattern type inference working! 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
ab5deb7811 Create struct patterns up to the hir level 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
9c2d83a4c8 Add crude implementation of tuplestruct pattern inference 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
3b0de53904 Work on type inference for ADT patterns 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
5648dcd36e Implement type inference for tuples and refs 2019-01-19 15:37:25 +03:00
Marcus Klaas de Vries
afaa26636e Add additional pattern variants 2019-01-19 15:37:25 +03:00
Aleksey Kladov
e13c9188fe fix the test 2019-01-19 15:37:25 +03: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
b93c6bc557 simplify 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
gfreezy
5c8cb56506 move rename to a new mod 2019-01-19 15:36:58 +03:00
Aleksey Kladov
a2ca03d10b ⬆️ salsa 2019-01-17 14:11:00 +03:00
Hirokazu Hata
0aedd4fb2f Add Ty::Array to walk_mut 2019-01-17 00:08:53 +09:00
Hirokazu Hata
f66ca1bd2e Fix test case invalid syntax 2019-01-16 23:39:14 +09:00
Hirokazu Hata
5c570fa770 Remove unneeded code 2019-01-16 23:39:14 +09:00
Hirokazu Hata
478ce1c8b5 Fix infer array test 2019-01-16 23:37:42 +09:00
Hirokazu Hata
5d3884d5b4 Fix Ty::Array 2019-01-16 23:37:42 +09:00
Hirokazu Hata
2a3262c757 Add infer array test 2019-01-16 23:35:06 +09:00
Hirokazu Hata
d665acbbec Implement array inference 2019-01-16 23:35:06 +09:00
Marcus Klaas de Vries
a2b6d3da30 Implement rudimentary type inference for unary operators 2019-01-16 00:04:39 +01:00
Aleksey Kladov
02c3d2f78e hir is cancelation free 2019-01-15 20:56:06 +03:00
Aleksey Kladov
8ba9c2d4ce remove Cancelable from type inference 2019-01-15 20:54:18 +03:00
Aleksey Kladov
b871062e32 remove Cancelable from Ty 2019-01-15 20:43:37 +03:00
Aleksey Kladov
fafcd103d2 remove Cancelable from ids 2019-01-15 19:18:52 +03:00
Aleksey Kladov
490112dea1 remove Cancelable from nameres 2019-01-15 19:15:01 +03:00
Aleksey Kladov
18e9a710cd remove Cancelable from fn_scopes 2019-01-15 19:04:49 +03:00
Aleksey Kladov
040a622c52 remove Cancelable from funciton body 2019-01-15 19:01:59 +03:00
Aleksey Kladov
f1367e0370 remove Cancelable from navigation target 2019-01-15 18:50:16 +03:00
Aleksey Kladov
9dd4099d93 remove Cancelable from static&const API 2019-01-15 18:45:01 +03:00
Aleksey Kladov
9446be2999 remove Cancelable from adt API 2019-01-15 18:43:25 +03:00
Aleksey Kladov
8af9a18660 remove Cancelable from Crate API 2019-01-15 18:33:26 +03:00
Aleksey Kladov
c159e414b4 remove Cancelable from Module API, part 2 2019-01-15 18:30:58 +03:00
Aleksey Kladov
ca52cf1ecd remove Cancelable from Module API 2019-01-15 18:26:29 +03:00
Aleksey Kladov
11f3c8afb2 remove Cancelable from source binders 2019-01-15 18:13:49 +03:00
Aleksey Kladov
68ff52566d remove Cancelable from module_tree_query 2019-01-15 17:55:15 +03:00
Aleksey Kladov
fedd320cf2 check_canceled does not return Result 2019-01-15 15:45:48 +03:00
Aleksey Kladov
dd45697e53 update salsa 2019-01-15 15:06:45 +03:00
Marcus Klaas de Vries
37ba237e66 Address issues found in review 2019-01-14 21:52:08 +01:00
Marcus Klaas de Vries
d67eabb512 Fix type inference for raw (byte) strings 2019-01-14 20:56:14 +01:00
Marcus Klaas de Vries
2689348772 Give literal expression default values for now 2019-01-14 19:46:10 +01:00
Marcus Klaas de Vries
a9a6a50c75 Fixup tests 2019-01-14 19:30:21 +01:00
Marcus Klaas de Vries
606d66a714 Start moving literal interpretation to the AST (WIP) 2019-01-14 13:56:43 +01:00
Marcus Klaas de Vries
81bc8e4973 don't try to treat arrays and tuples as literals 2019-01-14 13:55:49 +01:00
Marcus Klaas de Vries
1574715be5 Use type variables to determine exact type for ambiguous numeric literals 2019-01-14 13:54:31 +01:00
Marcus Klaas de Vries
5f5dc20d85 Try implementing integer type inference (WIP) 2019-01-14 13:52:57 +01:00