Aleksey Kladov
ac5a3f611b
Support for nested ADT
2019-12-20 12:20:49 +01:00
Aleksey Kladov
b2731ab78a
Drop dead code
2019-12-19 18:07:39 +01:00
Florian Diebold
6911bc89a7
Rename N! to name!
2019-12-13 22:33:38 +01:00
Florian Diebold
259c42f00e
Add macros for known names and paths
2019-12-13 22:33:37 +01:00
Aleksey Kladov
56710f119b
Move enum&union to new loc
2019-12-12 15:11:57 +01:00
Aleksey Kladov
f135a8ea55
Move structs to new loc
2019-12-12 14:58:04 +01:00
Aleksey Kladov
82e9b24558
Move traits to the new loc
2019-12-12 14:36:14 +01:00
Aleksey Kladov
7b0644d81e
Switch to the new location for impls
2019-12-12 14:25:34 +01:00
Aleksey Kladov
61c3887b70
Remove one more Ty
2019-12-08 17:50:43 +01:00
Aleksey Kladov
6805bb01e2
Cleanup module structure
2019-12-08 17:45:14 +01:00
Aleksey Kladov
e2cc552076
Remove dead code
2019-12-08 12:51:25 +01:00
Aleksey Kladov
b37c6a746b
Remove ty from code_model
2019-12-08 12:44:14 +01:00
Aleksey Kladov
b77d7c24aa
Remove bodies from code_model
2019-12-08 12:27:21 +01:00
Aleksey Kladov
b017bae837
remove infer
method from CodeModel
2019-12-08 12:26:53 +01:00
Aleksey Kladov
7aacf9a197
Drop some unused methods
2019-12-08 12:24:21 +01:00
Aleksey Kladov
200bda3daf
Cleanup Field ty
2019-12-08 12:16:57 +01:00
Aleksey Kladov
08d3166c8b
Cleanup Crate API
2019-12-08 12:02:53 +01:00
Aleksey Kladov
88c5b1282a
Rename GenericParam -> TypeParam
...
We don't have LifetimeParam yet, but they are planned!
2019-12-07 20:25:48 +01:00
Aleksey Kladov
7d2080a031
Classify name works for TypeParams
2019-12-07 19:52:09 +01:00
Aleksey Kladov
1692f07393
ToNav for GenericParam
2019-12-07 19:44:43 +01:00
Aleksey Kladov
8e9837df21
Remove idx and parent generics from generics
...
This makes `hir_def::GenericParams` flatter. The logic for
re-numbering the params is moved to hir instead.
2019-12-07 13:05:56 +01:00
ice1000
38853459e3
Add ModuleSource::Block
2019-12-04 18:30:42 -05:00
ice1000
009437f5d9
Replace ra_hir_expand::either
with crate
2019-12-03 11:07:56 -05:00
Aleksey Kladov
ccd1b0800a
Rename Source -> InFile
2019-11-28 12:50:26 +03:00
Aleksey Kladov
1d14fd1737
Use Name::missing consistently
2019-11-27 23:22:20 +03:00
Aleksey Kladov
04735abfae
Minimize API
2019-11-27 22:21:01 +03:00
Aleksey Kladov
d9a36a736b
Rename module_id -> local_id
2019-11-27 21:31:51 +03:00
Aleksey Kladov
a87579500a
Move Ty
2019-11-27 21:16:00 +03:00
Aleksey Kladov
9fa46ff5c6
Use Id for variats
2019-11-27 16:25:01 +03:00
Aleksey Kladov
17680f6060
More decoupling
2019-11-27 16:02:33 +03:00
Aleksey Kladov
d569869f7a
Decouple more
2019-11-27 15:56:20 +03:00
Aleksey Kladov
bed6869865
Cleanup
2019-11-26 22:56:07 +03:00
Aleksey Kladov
cace49e9a7
Decouple
2019-11-26 22:31:04 +03:00
Aleksey Kladov
936c6950e7
Remove last traces of adt from Ty
2019-11-26 21:32:39 +03:00
Aleksey Kladov
882fe0a47e
More precise NameKind::Self
2019-11-26 21:32:39 +03:00
Aleksey Kladov
4e415a269e
Remove ns-polymorphic type_for_def
2019-11-26 21:04:24 +03:00
Aleksey Kladov
72d8e7e69a
Use TraitId in TraitRef
2019-11-26 18:01:34 +03:00
Aleksey Kladov
24b1e79af5
Remove another helper
2019-11-26 17:45:06 +03:00
Aleksey Kladov
d118997b93
Remove assoc_type_by_name helper
2019-11-26 17:44:43 +03:00
Aleksey Kladov
9bc8f1f4f8
Store names in TraitData
2019-11-26 17:44:43 +03:00
Aleksey Kladov
4a0792362e
Detangle ty from traits a bit
2019-11-26 17:44:43 +03:00
Aleksey Kladov
45d05ed783
id-ify impls_in_crate_query
2019-11-26 15:36:25 +03:00
Aleksey Kladov
a443b5033c
Id-ify Ty::Adt
2019-11-26 14:29:12 +03:00
Aleksey Kladov
e5eadb3390
Introduce hir::Type
...
It should provide a convenient API over more low-level Ty
2019-11-26 14:02:57 +03:00
Aleksey Kladov
3e32ac4f86
More ids in Ty
2019-11-25 18:31:48 +03:00
Aleksey Kladov
5fd68b5929
Fix hir for ast::UnionDef
2019-11-25 17:50:49 +03:00
Aleksey Kladov
5f39c5794e
Use GenericDefIdMore
2019-11-25 15:54:03 +03:00
Aleksey Kladov
d06904e90c
Switch to variant-granularity field type inference
2019-11-25 00:12:36 +03:00
Aleksey Kladov
586acef528
Simplify ADT fields
2019-11-24 22:44:24 +03:00
Aleksey Kladov
191b1d238f
Remove impl_block module
2019-11-24 21:17:37 +03:00
Aleksey Kladov
e48430cbae
Simplify
2019-11-24 20:53:42 +03:00
Aleksey Kladov
63e3ea38d3
Don't redo field resolution in the IDE
2019-11-24 20:06:55 +03:00
Aleksey Kladov
f5e0a31eaf
Cleanup nameres
2019-11-24 18:05:12 +03:00
Aleksey Kladov
99af523b68
Cleanup
2019-11-24 17:36:06 +03:00
Aleksey Kladov
e0b06cb672
Switch to StaticLoc for statics
2019-11-24 15:18:12 +03:00
Aleksey Kladov
f11237561c
Cleanup imports
2019-11-24 14:02:08 +03:00
Aleksey Kladov
ffc2325d19
Move ModuleSource back to hir
2019-11-23 17:12:49 +03:00
Aleksey Kladov
6bdd5fa461
Privatise nameres
2019-11-23 17:12:49 +03:00
Aleksey Kladov
158b1cb524
Rename CrateModuleId
2019-11-23 17:12:49 +03:00
Aleksey Kladov
dd5c2dc5bf
Move ImportId
2019-11-23 16:49:05 +03:00
Aleksey Kladov
e5bcb69e4f
Hide ImportId
2019-11-23 16:39:53 +03:00
Aleksey Kladov
958862093e
Move docs to hir_def
2019-11-23 14:43:38 +03:00
Aleksey Kladov
552ba868af
Move attrs query to hir_def
2019-11-23 11:14:40 +03:00
Aleksey Kladov
7469d2b863
Remove TraitData from API
2019-11-22 18:53:39 +03:00
Aleksey Kladov
fe119fef27
Hide data from public API
2019-11-22 18:51:53 +03:00
Aleksey Kladov
d4f4ae0dd8
Move const&static date to hir_def
2019-11-22 18:46:39 +03:00
Aleksey Kladov
64df759418
Make ImplData's fields public
2019-11-22 17:42:56 +03:00
Aleksey Kladov
78f3b0627c
Move FunctionData to hir_def
2019-11-22 17:18:04 +03:00
Aleksey Kladov
4fc900deb1
Move TypeAlias to hir_def
2019-11-22 13:13:51 +03:00
Aleksey Kladov
4daf931111
Remove old hir::generics module
2019-11-21 16:23:02 +03:00
Aleksey Kladov
6d64798a23
Move resolver to hir_def
2019-11-21 15:39:09 +03:00
Aleksey Kladov
ca1af86e7b
Use GenericParam in ScopeDef
2019-11-21 14:22:30 +03:00
Aleksey Kladov
1312c57d34
Move ScopeDef
2019-11-21 14:21:26 +03:00
Aleksey Kladov
061e6c77b5
Decouple
2019-11-21 14:13:49 +03:00
Aleksey Kladov
0102fb4133
Decouple Resolver
2019-11-21 13:25:03 +03:00
Aleksey Kladov
1cead41510
Simplify
2019-11-20 22:22:32 +03:00
Aleksey Kladov
6241cf9a59
Add HasResolver trait
2019-11-20 22:22:32 +03:00
Aleksey Kladov
7c275a7ed2
Remove hir/adt.rs
2019-11-20 21:34:12 +03:00
Aleksey Kladov
12ec946216
Simplify generic params
2019-11-20 20:50:34 +03:00
Aleksey Kladov
111891dc2d
Move constants to new ID
...
This allows us to get rid of trait item index
2019-11-20 18:41:23 +03:00
Aleksey Kladov
ee95a35664
Don't duplicate ContainerId type
2019-11-20 17:50:02 +03:00
Aleksey Kladov
64c21ed195
Switch type aliases to new sources
2019-11-20 17:43:03 +03:00
Aleksey Kladov
cebeedc66f
Next gen IDs for functions
...
The current system with AstIds has two primaraly drawbacks:
* It is possible to manufacture IDs out of thin air.
For example, it's possible to create IDs for items which are not
considered in CrateDefMap due to cfg. Or it is possible to mixup
structs and unions, because they share ID space.
* Getting the ID of a parent requires a secondary index.
Instead, the plan is to pursue the more traditional approach, where
each items stores the id of the parent declaration. This makes
`FromSource` more awkward, but also more correct: now, to get from an
AST to HIR, we first do this recursively for the parent item, and the
just search the children of the parent for the matching def
2019-11-20 16:22:58 +03:00
Aleksey Kladov
06fa3d8389
Move traits to hir_def
2019-11-20 14:22:38 +03:00
Aleksey Kladov
36e3fc9d54
Rename Source::ast -> Source::value
2019-11-20 09:42:30 +03:00
Aleksey Kladov
b21829f7ed
Remove old impls infrastructure
2019-11-15 21:35:03 +03:00
Aleksey Kladov
c3f84960aa
Flatten expr module
2019-11-15 14:53:09 +03:00
Aleksey Kladov
9c7a2aef30
Refactor Module::from_source to properly descend from root file
2019-11-15 10:26:31 +03:00
Aleksey Kladov
1583ab1558
Move body queries to hir_def
2019-11-14 17:37:22 +03:00
Aleksey Kladov
fc055281a5
Minor cleanup
2019-11-12 11:49:16 +03:00
Aleksey Kladov
c5a18c44e5
Introduce hir::GenericParam
...
Unlike existing hir::GenericParams, this is a global ID.
2019-11-11 17:36:27 +03:00
Aleksey Kladov
8b7f853cc1
Add hir::Local
2019-11-11 14:42:08 +03:00
Aleksey Kladov
6294fd5ec9
Unfork struct and union ids
2019-11-09 15:34:00 +03:00
bors[bot]
14e19c0df1
Merge #2179
...
2179: Use HirDatabase to compute `is_deprecated` r=matklad a=martskins
This PR fixes #2167 by introducing `attributes_query` and adding `fn attrs(&self, def: crate::AttrDef) -> Option<Arc<[Attr]>>;` to the `DefDatabase` trait.
I'm a little concerned about the two spots in `attributes_query` where code is repeated, but I couldn't figure out a way to avoid that, so.. I welcome suggestions 😄
Co-authored-by: Martin Asquino <martin.asquino@gmail.com>
2019-11-06 21:11:42 +00:00
Martin Asquino
cb3767f28a
HirDatabase stored attributes
2019-11-04 18:16:35 -03:00
Aleksey Kladov
739babc391
Move Namespace enum closer to usage
2019-11-04 23:02:35 +03:00
Aleksey Kladov
f0eb9cc6e6
Remove last traces of nameres from hir
2019-11-03 23:49:44 +03:00
Aleksey Kladov
ba2efca2bb
Move CrateDefMap to hir_def
2019-11-03 18:04:06 +03:00
Aleksey Kladov
13735d91a7
Move diagnostics to hir_expand
2019-11-02 23:42:38 +03:00
Florian Diebold
1173c3dab5
Refactor to unify with method resolution
2019-11-01 19:57:08 +01:00
Aleksey Kladov
09f9733ca6
move struct & enum data to hir_def
2019-10-31 16:40:36 +03:00
Aleksey Kladov
1602db7d7d
add ModuleDefId to hir_def
2019-10-31 11:23:30 +03:00
Aleksey Kladov
b20d37cb49
move builtin types to hir_def
2019-10-31 10:51:54 +03:00
Aleksey Kladov
872ac566bf
push name down to hir_expand
2019-10-30 18:56:20 +03:00
Aleksey Kladov
e5300ad3ba
remove forward pointer for type_ref
2019-10-30 17:43:14 +03:00
Aleksey Kladov
f8ddef875a
remove forward pointer for name
2019-10-30 17:43:14 +03:00
Aleksey Kladov
16e620c052
move raw_items to hir_def
2019-10-30 17:43:11 +03:00
Aleksey Kladov
c9cd6aa370
Move ids to hir_def crate
2019-10-30 13:11:38 +03:00
Aleksey Kladov
a136cc0653
introduce ra_hir_def
2019-10-30 12:27:54 +03:00
Aleksey Kladov
1555a1aa0d
remove one more dependency on source roots
2019-10-14 15:15:47 +03:00
Ekaterina Babshukova
aa2f58550a
add module
methods
2019-10-09 14:59:47 +03:00
ice1000
b043358be9
Address comments: fix docs, add completion test for Self
.
2019-10-08 07:32:41 -04:00
ice1000
6bad638928
Support inferring Self
type in enum definitions
...
Signed-off-by: ice1000 <ice1000kotlin@foxmail.com>
2019-10-07 19:40:14 -04:00
Alexander Andreev
fdbd6bb11a
Added test for check doc strings in crates.
...
#1856
2019-09-30 11:58:53 +03:00
Florian Diebold
daaf46177e
Add SubstsBuilder
...
+ further refactoring.
2019-09-26 23:03:39 +02:00
Florian Diebold
c35ef5013c
Resolve trait associated items
...
E.g. `Default::default` or `<Foo as Default>::default`.
2019-09-25 21:41:17 +02:00
Shotaro Yamada
9c45a9e586
Remove redundant clone()
2019-09-25 10:32:01 +09:00
Florian Diebold
619a8185a6
Give closures types
2019-09-24 23:05:12 +02:00
kjeremy
1808175f98
Drive by lints
2019-09-23 14:31:30 -04:00
Ekaterina Babshukova
2867c40925
introduce FromSource trait
2019-09-19 19:38:27 +03:00
Florian Diebold
a040fde3ae
Remove TraitItem and ImplItem in favor of AssocItem
2019-09-17 19:47:45 +02:00
Florian Diebold
828d60574f
Refactor a bit to prepare for resolving trait assoc items
2019-09-17 19:47:45 +02:00
Dylan MacKenzie
cd8155b7f7
Remove is_unnamed
2019-09-15 23:08:32 -07:00
Dylan MacKenzie
beac779c96
Gracefully handle const _
items in ConstData
2019-09-15 16:48:50 -07:00
Aleksey Kladov
51e2d76b98
Specify desirable namespace when calling resolve
...
That way, we are able to get rid of a number of unreachable statements
2019-09-13 16:24:10 +03:00
Aleksey Kladov
114a1b878e
rename AdtDef -> Adt
2019-09-13 00:34:52 +03:00
Aleksey Kladov
bcf30d389c
generalize impl_froms to nested enums
2019-09-13 00:31:04 +03:00
Aleksey Kladov
45117c6388
make various enums "inherit" from AdtDef
2019-09-13 00:10:16 +03:00
Aleksey Kladov
6021a2a83a
cleanup hir db imports
2019-09-08 09:55:12 +03:00
Florian Diebold
8fb3cab76c
Fix crash for super trait cycles
2019-09-07 16:49:57 +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
60bdb66ef2
Lower bounds on trait definition, and resolve assoc types from super traits
2019-09-07 14:31:43 +02:00
Florian Diebold
f92177cfb5
Add an expr_source method analogous to the source methods in the code model
...
... and use that instead of exposing the source map.
2019-09-02 14:56:38 +02:00
Florian Diebold
a7858bb7bf
Report type mismatches in analysis-stats
...
Only the number usually; each one individually when running with -v.
2019-09-02 14:56:38 +02:00
Aleksey Kladov
5b18a4eef9
rename struct -> record, pos -> tuple
2019-08-23 16:59:50 +03:00
Florian Diebold
6cfdfdecba
Add representations of associated types
...
This adds three different representations, copied from the Chalk model:
- `Ty::Projection` is an associated type projection written somewhere in the
code, like `<Foo as Trait>::Bar`.
- `Ty::UnselectedProjection` is similar, but we don't know the trait
yet (`Foo::Bar`).
- The above representations are normalized to their actual types during type
inference. When that isn't possible, for example for `T::Item` inside an `fn
foo<T: Iterator>`, the type is normalized to an application type with
`TypeCtor::AssociatedType`.
2019-08-12 21:43:00 +02:00
Aleksey Kladov
e2b28f5bb8
migrate ra_hir to the new rowan
2019-07-19 13:16:25 +03:00
Aleksey Kladov
deab4caa7b
make Parse fields private
...
this is in preparation for the new rowan API
2019-07-12 19:41:13 +03:00
Muhammad Mominul Huque
09b72489dd
cargo format
2019-07-08 04:09:35 +06:00
Muhammad Mominul Huque
012fec54dc
Constify KnownName's
2019-07-08 03:29:38 +06:00
Aleksey Kladov
fd30ec406b
properly restrict diagnostics to a single file
2019-07-05 19:27:20 +03:00
bors[bot]
ec6f71576a
Merge #1491
...
1491: More clippy r=matklad a=kjeremy
A few more clippy changes.
I'm a little unsure of the second commit. It's the trivially_copy_pass_by_ref lint and there are a number of places in the code we could use it if it makes sense.
Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-07-05 14:19:12 +00:00
Shotaro Yamada
d0e9cd2bc6
Fix clippy::redundant_clone
2019-07-05 12:45:58 +09:00
Jeremy Kolb
1a950cdbcf
&self -> self
...
https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref
2019-07-04 23:01:40 -04:00
Jeremy Kolb
6b4ec73b7e
Clippy changes
2019-07-04 23:00:00 -04:00
Aleksey Kladov
1834bae5b8
allow rustfmt to reorder imports
...
This wasn't a right decision in the first place, the feature flag was
broken in the last rustfmt release, and syntax highlighting of imports
is more important anyway
2019-07-04 23:09:09 +03:00
Shotaro Yamada
546442df68
Add completion for type aliases
2019-07-03 03:08:39 +09:00
Florian Diebold
d37f960dfa
Complete associated methods on enums (and unions) as well
2019-06-29 12:40:01 +02:00
Aleksey Kladov
bcff61257a
Add firewall query to lang items
...
With an intermediate query, changing one module won't cause reparsing
of all modules
2019-06-19 23:46:50 +03:00
Aleksey Kladov
0caec7d250
rename XSignature -> XData
2019-06-18 20:20:08 +03:00