diff options
Diffstat (limited to 'crates/ra_hir/src/ids.rs')
-rw-r--r-- | crates/ra_hir/src/ids.rs | 50 |
1 files changed, 4 insertions, 46 deletions
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs index 6875b006d..ff4a81e59 100644 --- a/crates/ra_hir/src/ids.rs +++ b/crates/ra_hir/src/ids.rs | |||
@@ -323,25 +323,6 @@ impl AstItemDef<ast::TraitDef> for TraitId { | |||
323 | } | 323 | } |
324 | } | 324 | } |
325 | 325 | ||
326 | fn from_chalk<T: salsa::InternKey>(chalk_id: chalk_ir::RawId) -> T { | ||
327 | T::from_intern_id(salsa::InternId::from(chalk_id.index)) | ||
328 | } | ||
329 | fn to_chalk<T: salsa::InternKey>(salsa_id: T) -> chalk_ir::RawId { | ||
330 | chalk_ir::RawId { index: salsa_id.as_intern_id().as_u32() } | ||
331 | } | ||
332 | |||
333 | impl From<chalk_ir::TraitId> for TraitId { | ||
334 | fn from(trait_id: chalk_ir::TraitId) -> Self { | ||
335 | from_chalk(trait_id.0) | ||
336 | } | ||
337 | } | ||
338 | |||
339 | impl From<TraitId> for chalk_ir::TraitId { | ||
340 | fn from(trait_id: TraitId) -> Self { | ||
341 | chalk_ir::TraitId(to_chalk(trait_id)) | ||
342 | } | ||
343 | } | ||
344 | |||
345 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 326 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
346 | pub struct TypeAliasId(salsa::InternId); | 327 | pub struct TypeAliasId(salsa::InternId); |
347 | impl_intern_key!(TypeAliasId); | 328 | impl_intern_key!(TypeAliasId); |
@@ -374,37 +355,14 @@ impl MacroCallId { | |||
374 | } | 355 | } |
375 | } | 356 | } |
376 | 357 | ||
377 | /// This exists just for chalk, because chalk doesn't differentiate between | 358 | /// This exists just for Chalk, because Chalk just has a single `StructId` where |
378 | /// enums and structs. | 359 | /// we have different kinds of ADTs, primitive types and special type |
360 | /// constructors like tuples and function pointers. | ||
379 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 361 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
380 | pub struct TypeCtorId(salsa::InternId); | 362 | pub struct TypeCtorId(salsa::InternId); |
381 | impl_intern_key!(TypeCtorId); | 363 | impl_intern_key!(TypeCtorId); |
382 | 364 | ||
383 | impl From<chalk_ir::StructId> for TypeCtorId { | 365 | /// This exists just for Chalk, because our ImplIds are only unique per module. |
384 | fn from(struct_id: chalk_ir::StructId) -> Self { | ||
385 | from_chalk(struct_id.0) | ||
386 | } | ||
387 | } | ||
388 | |||
389 | impl From<TypeCtorId> for chalk_ir::StructId { | ||
390 | fn from(adt_id: TypeCtorId) -> Self { | ||
391 | chalk_ir::StructId(to_chalk(adt_id)) | ||
392 | } | ||
393 | } | ||
394 | |||
395 | /// This exists just for chalk, because our ImplIds are only unique per module. | ||
396 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 366 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
397 | pub struct GlobalImplId(salsa::InternId); | 367 | pub struct GlobalImplId(salsa::InternId); |
398 | impl_intern_key!(GlobalImplId); | 368 | impl_intern_key!(GlobalImplId); |
399 | |||
400 | impl From<chalk_ir::ImplId> for GlobalImplId { | ||
401 | fn from(impl_id: chalk_ir::ImplId) -> Self { | ||
402 | from_chalk(impl_id.0) | ||
403 | } | ||
404 | } | ||
405 | |||
406 | impl From<GlobalImplId> for chalk_ir::ImplId { | ||
407 | fn from(impl_id: GlobalImplId) -> Self { | ||
408 | chalk_ir::ImplId(to_chalk(impl_id)) | ||
409 | } | ||
410 | } | ||