aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-03-19 17:47:43 +0000
committerGitHub <[email protected]>2020-03-19 17:47:43 +0000
commit1ba03c6995015b3143a417ed07437f0c9028a97d (patch)
treece3eb047dd9fe9005750a3b1417d95b1aa8fe01e /crates/ra_project_model
parent988f1dda6bde576ec2457dd97a7525014609c771 (diff)
parentf840fcb2f525c13809d6a736e434155edf075a06 (diff)
Merge #3656
3656: Simplify arenas r=matklad a=matklad At the moment, Arena is paranetrized by two types: index and data. The original motivation was to allow index to be defined in the downstream crate, so that you can add inherent impls to the index. However, it seems like we've never actually used that capability, so perhaps we should switch to a generic Index impl? This PR tries this out, switching only `raw.rs` and parts of `hir_def`. wdyt? Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_project_model')
-rw-r--r--crates/ra_project_model/src/cargo_workspace.rs14
-rw-r--r--crates/ra_project_model/src/sysroot.rs8
2 files changed, 8 insertions, 14 deletions
diff --git a/crates/ra_project_model/src/cargo_workspace.rs b/crates/ra_project_model/src/cargo_workspace.rs
index 43dbd096a..c2857dbfc 100644
--- a/crates/ra_project_model/src/cargo_workspace.rs
+++ b/crates/ra_project_model/src/cargo_workspace.rs
@@ -7,7 +7,7 @@ use std::{
7 7
8use anyhow::{Context, Result}; 8use anyhow::{Context, Result};
9use cargo_metadata::{CargoOpt, Message, MetadataCommand, PackageId}; 9use cargo_metadata::{CargoOpt, Message, MetadataCommand, PackageId};
10use ra_arena::{impl_arena_id, Arena, RawId}; 10use ra_arena::{Arena, Idx};
11use ra_cargo_watch::run_cargo; 11use ra_cargo_watch::run_cargo;
12use ra_db::Edition; 12use ra_db::Edition;
13use rustc_hash::FxHashMap; 13use rustc_hash::FxHashMap;
@@ -22,8 +22,8 @@ use serde::Deserialize;
22/// concepts. 22/// concepts.
23#[derive(Debug, Clone)] 23#[derive(Debug, Clone)]
24pub struct CargoWorkspace { 24pub struct CargoWorkspace {
25 packages: Arena<Package, PackageData>, 25 packages: Arena<PackageData>,
26 targets: Arena<Target, TargetData>, 26 targets: Arena<TargetData>,
27 workspace_root: PathBuf, 27 workspace_root: PathBuf,
28} 28}
29 29
@@ -69,13 +69,9 @@ impl Default for CargoFeatures {
69 } 69 }
70} 70}
71 71
72#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 72pub type Package = Idx<PackageData>;
73pub struct Package(RawId);
74impl_arena_id!(Package);
75 73
76#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 74pub type Target = Idx<TargetData>;
77pub struct Target(RawId);
78impl_arena_id!(Target);
79 75
80#[derive(Debug, Clone)] 76#[derive(Debug, Clone)]
81pub struct PackageData { 77pub struct PackageData {
diff --git a/crates/ra_project_model/src/sysroot.rs b/crates/ra_project_model/src/sysroot.rs
index 4ac4fa14d..55ff5ad80 100644
--- a/crates/ra_project_model/src/sysroot.rs
+++ b/crates/ra_project_model/src/sysroot.rs
@@ -7,16 +7,14 @@ use std::{
7 process::{Command, Output}, 7 process::{Command, Output},
8}; 8};
9 9
10use ra_arena::{impl_arena_id, Arena, RawId}; 10use ra_arena::{Arena, Idx};
11 11
12#[derive(Default, Debug, Clone)] 12#[derive(Default, Debug, Clone)]
13pub struct Sysroot { 13pub struct Sysroot {
14 crates: Arena<SysrootCrate, SysrootCrateData>, 14 crates: Arena<SysrootCrateData>,
15} 15}
16 16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 17pub type SysrootCrate = Idx<SysrootCrateData>;
18pub struct SysrootCrate(RawId);
19impl_arena_id!(SysrootCrate);
20 18
21#[derive(Debug, Clone)] 19#[derive(Debug, Clone)]
22pub struct SysrootCrateData { 20pub struct SysrootCrateData {