Skip to content

Commit ead3691

Browse files
committed
CrateOrigin::Local means local to the project workspace, not cargo workspace
1 parent 0ccb3b8 commit ead3691

17 files changed

+73
-332
lines changed

crates/base-db/src/input.rs

+17-114
Original file line numberDiff line numberDiff line change
@@ -293,62 +293,6 @@ pub struct CrateData {
293293
pub is_proc_macro: bool,
294294
}
295295

296-
impl CrateData {
297-
/// Check if [`other`] is almost equal to [`self`] ignoring `CrateOrigin` value.
298-
pub fn eq_ignoring_origin_and_deps(&self, other: &CrateData, ignore_dev_deps: bool) -> bool {
299-
// This method has some obscure bits. These are mostly there to be compliant with
300-
// some patches. References to the patches are given.
301-
if self.root_file_id != other.root_file_id {
302-
return false;
303-
}
304-
305-
if self.display_name != other.display_name {
306-
return false;
307-
}
308-
309-
if self.is_proc_macro != other.is_proc_macro {
310-
return false;
311-
}
312-
313-
if self.edition != other.edition {
314-
return false;
315-
}
316-
317-
if self.version != other.version {
318-
return false;
319-
}
320-
321-
let mut opts = self.cfg_options.difference(&other.cfg_options);
322-
if let Some(it) = opts.next() {
323-
// Don't care if rust_analyzer CfgAtom is the only cfg in the difference set of self's and other's cfgs.
324-
// https://github.com/rust-lang/rust-analyzer/blob/0840038f02daec6ba3238f05d8caa037d28701a0/crates/project-model/src/workspace.rs#L894
325-
if it.to_string() != "rust_analyzer" {
326-
return false;
327-
}
328-
329-
if opts.next().is_some() {
330-
return false;
331-
}
332-
}
333-
334-
if self.env != other.env {
335-
return false;
336-
}
337-
338-
let slf_deps = self.dependencies.iter();
339-
let other_deps = other.dependencies.iter();
340-
341-
if ignore_dev_deps {
342-
return slf_deps
343-
.clone()
344-
.filter(|it| it.kind != DependencyKind::Dev)
345-
.eq(other_deps.clone().filter(|it| it.kind != DependencyKind::Dev));
346-
}
347-
348-
slf_deps.eq(other_deps)
349-
}
350-
}
351-
352296
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
353297
pub enum Edition {
354298
Edition2015,
@@ -389,32 +333,22 @@ pub enum DependencyKind {
389333
pub struct Dependency {
390334
pub crate_id: CrateId,
391335
pub name: CrateName,
392-
kind: DependencyKind,
393336
prelude: bool,
394337
}
395338

396339
impl Dependency {
397-
pub fn new(name: CrateName, crate_id: CrateId, kind: DependencyKind) -> Self {
398-
Self { name, crate_id, prelude: true, kind }
340+
pub fn new(name: CrateName, crate_id: CrateId) -> Self {
341+
Self { name, crate_id, prelude: true }
399342
}
400343

401-
pub fn with_prelude(
402-
name: CrateName,
403-
crate_id: CrateId,
404-
prelude: bool,
405-
kind: DependencyKind,
406-
) -> Self {
407-
Self { name, crate_id, prelude, kind }
344+
pub fn with_prelude(name: CrateName, crate_id: CrateId, prelude: bool) -> Self {
345+
Self { name, crate_id, prelude }
408346
}
409347

410348
/// Whether this dependency is to be added to the depending crate's extern prelude.
411349
pub fn is_prelude(&self) -> bool {
412350
self.prelude
413351
}
414-
415-
pub fn kind(&self) -> DependencyKind {
416-
self.kind
417-
}
418352
}
419353

420354
impl CrateGraph {
@@ -684,11 +618,9 @@ impl CrateGraph {
684618
match (cfg_if, std) {
685619
(Some(cfg_if), Some(std)) => {
686620
self.arena[cfg_if].dependencies.clear();
687-
self.arena[std].dependencies.push(Dependency::new(
688-
CrateName::new("cfg_if").unwrap(),
689-
cfg_if,
690-
DependencyKind::Normal,
691-
));
621+
self.arena[std]
622+
.dependencies
623+
.push(Dependency::new(CrateName::new("cfg_if").unwrap(), cfg_if));
692624
true
693625
}
694626
_ => false,
@@ -836,7 +768,7 @@ impl fmt::Display for CyclicDependenciesError {
836768

837769
#[cfg(test)]
838770
mod tests {
839-
use crate::{CrateOrigin, DependencyKind};
771+
use crate::CrateOrigin;
840772

841773
use super::{CrateGraph, CrateName, Dependency, Edition::Edition2018, Env, FileId};
842774

@@ -877,22 +809,13 @@ mod tests {
877809
CrateOrigin::Local { repo: None, name: None },
878810
);
879811
assert!(graph
880-
.add_dep(
881-
crate1,
882-
Dependency::new(CrateName::new("crate2").unwrap(), crate2, DependencyKind::Normal)
883-
)
812+
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2,))
884813
.is_ok());
885814
assert!(graph
886-
.add_dep(
887-
crate2,
888-
Dependency::new(CrateName::new("crate3").unwrap(), crate3, DependencyKind::Normal)
889-
)
815+
.add_dep(crate2, Dependency::new(CrateName::new("crate3").unwrap(), crate3,))
890816
.is_ok());
891817
assert!(graph
892-
.add_dep(
893-
crate3,
894-
Dependency::new(CrateName::new("crate1").unwrap(), crate1, DependencyKind::Normal)
895-
)
818+
.add_dep(crate3, Dependency::new(CrateName::new("crate1").unwrap(), crate1,))
896819
.is_err());
897820
}
898821

@@ -922,16 +845,10 @@ mod tests {
922845
CrateOrigin::Local { repo: None, name: None },
923846
);
924847
assert!(graph
925-
.add_dep(
926-
crate1,
927-
Dependency::new(CrateName::new("crate2").unwrap(), crate2, DependencyKind::Normal)
928-
)
848+
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2,))
929849
.is_ok());
930850
assert!(graph
931-
.add_dep(
932-
crate2,
933-
Dependency::new(CrateName::new("crate2").unwrap(), crate2, DependencyKind::Normal)
934-
)
851+
.add_dep(crate2, Dependency::new(CrateName::new("crate2").unwrap(), crate2,))
935852
.is_err());
936853
}
937854

@@ -972,16 +889,10 @@ mod tests {
972889
CrateOrigin::Local { repo: None, name: None },
973890
);
974891
assert!(graph
975-
.add_dep(
976-
crate1,
977-
Dependency::new(CrateName::new("crate2").unwrap(), crate2, DependencyKind::Normal)
978-
)
892+
.add_dep(crate1, Dependency::new(CrateName::new("crate2").unwrap(), crate2,))
979893
.is_ok());
980894
assert!(graph
981-
.add_dep(
982-
crate2,
983-
Dependency::new(CrateName::new("crate3").unwrap(), crate3, DependencyKind::Normal)
984-
)
895+
.add_dep(crate2, Dependency::new(CrateName::new("crate3").unwrap(), crate3,))
985896
.is_ok());
986897
}
987898

@@ -1013,20 +924,12 @@ mod tests {
1013924
assert!(graph
1014925
.add_dep(
1015926
crate1,
1016-
Dependency::new(
1017-
CrateName::normalize_dashes("crate-name-with-dashes"),
1018-
crate2,
1019-
DependencyKind::Normal
1020-
)
927+
Dependency::new(CrateName::normalize_dashes("crate-name-with-dashes"), crate2,)
1021928
)
1022929
.is_ok());
1023930
assert_eq!(
1024931
graph[crate1].dependencies,
1025-
vec![Dependency::new(
1026-
CrateName::new("crate_name_with_dashes").unwrap(),
1027-
crate2,
1028-
DependencyKind::Normal
1029-
)]
932+
vec![Dependency::new(CrateName::new("crate_name_with_dashes").unwrap(), crate2,)]
1030933
);
1031934
}
1032935
}

crates/ide-db/src/rename.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ impl Definition {
7171
&self,
7272
sema: &Semantics<'_, RootDatabase>,
7373
new_name: &str,
74-
rename_external: bool,
7574
) -> Result<SourceChange> {
7675
// self.krate() returns None if
7776
// self is a built-in attr, built-in type or tool module.
@@ -80,8 +79,8 @@ impl Definition {
8079
if let Some(krate) = self.krate(sema.db) {
8180
// Can we not rename non-local items?
8281
// Then bail if non-local
83-
if !rename_external && !krate.origin(sema.db).is_local() {
84-
bail!("Cannot rename a non-local definition as the config for it is disabled")
82+
if !krate.origin(sema.db).is_local() {
83+
bail!("Cannot rename a non-local definition")
8584
}
8685
}
8786

crates/ide-diagnostics/src/handlers/incorrect_case.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::IncorrectCase) -> Option<Vec<Ass
4343
let label = format!("Rename to {}", d.suggested_text);
4444
let mut res = unresolved_fix("change_case", &label, frange.range);
4545
if ctx.resolve.should_resolve(&res.id) {
46-
let source_change = def.rename(&ctx.sema, &d.suggested_text, true);
46+
let source_change = def.rename(&ctx.sema, &d.suggested_text);
4747
res.source_change = Some(source_change.ok().unwrap_or_default());
4848
}
4949

crates/ide/src/lib.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -675,9 +675,8 @@ impl Analysis {
675675
&self,
676676
position: FilePosition,
677677
new_name: &str,
678-
rename_external: bool,
679678
) -> Cancellable<Result<SourceChange, RenameError>> {
680-
self.with_db(|db| rename::rename(db, position, new_name, rename_external))
679+
self.with_db(|db| rename::rename(db, position, new_name))
681680
}
682681

683682
pub fn prepare_rename(

crates/ide/src/rename.rs

+10-31
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ pub(crate) fn rename(
8484
db: &RootDatabase,
8585
position: FilePosition,
8686
new_name: &str,
87-
rename_external: bool,
8887
) -> RenameResult<SourceChange> {
8988
let sema = Semantics::new(db);
9089
let source_file = sema.parse(position.file_id);
@@ -104,7 +103,7 @@ pub(crate) fn rename(
104103
return rename_to_self(&sema, local);
105104
}
106105
}
107-
def.rename(&sema, new_name, rename_external)
106+
def.rename(&sema, new_name)
108107
})
109108
.collect();
110109

@@ -123,9 +122,9 @@ pub(crate) fn will_rename_file(
123122
let module = sema.to_module_def(file_id)?;
124123
let def = Definition::Module(module);
125124
let mut change = if is_raw_identifier(new_name_stem) {
126-
def.rename(&sema, &SmolStr::from_iter(["r#", new_name_stem]), true).ok()?
125+
def.rename(&sema, &SmolStr::from_iter(["r#", new_name_stem])).ok()?
127126
} else {
128-
def.rename(&sema, new_name_stem, true).ok()?
127+
def.rename(&sema, new_name_stem).ok()?
129128
};
130129
change.file_system_edits.clear();
131130
Some(change)
@@ -377,16 +376,11 @@ mod tests {
377376
use super::{RangeInfo, RenameError};
378377

379378
fn check(new_name: &str, ra_fixture_before: &str, ra_fixture_after: &str) {
380-
check_with_rename_config(new_name, ra_fixture_before, ra_fixture_after, true);
379+
check_with_rename_config(new_name, ra_fixture_before, ra_fixture_after);
381380
}
382381

383382
#[track_caller]
384-
fn check_with_rename_config(
385-
new_name: &str,
386-
ra_fixture_before: &str,
387-
ra_fixture_after: &str,
388-
rename_external: bool,
389-
) {
383+
fn check_with_rename_config(new_name: &str, ra_fixture_before: &str, ra_fixture_after: &str) {
390384
let ra_fixture_after = &trim_indent(ra_fixture_after);
391385
let (analysis, position) = fixture::position(ra_fixture_before);
392386
if !ra_fixture_after.starts_with("error: ") {
@@ -395,7 +389,7 @@ mod tests {
395389
}
396390
}
397391
let rename_result = analysis
398-
.rename(position, new_name, rename_external)
392+
.rename(position, new_name)
399393
.unwrap_or_else(|err| panic!("Rename to '{new_name}' was cancelled: {err}"));
400394
match rename_result {
401395
Ok(source_change) => {
@@ -426,10 +420,8 @@ mod tests {
426420

427421
fn check_expect(new_name: &str, ra_fixture: &str, expect: Expect) {
428422
let (analysis, position) = fixture::position(ra_fixture);
429-
let source_change = analysis
430-
.rename(position, new_name, true)
431-
.unwrap()
432-
.expect("Expect returned a RenameError");
423+
let source_change =
424+
analysis.rename(position, new_name).unwrap().expect("Expect returned a RenameError");
433425
expect.assert_eq(&filter_expect(source_change))
434426
}
435427

@@ -2636,19 +2628,7 @@ pub struct S;
26362628
//- /main.rs crate:main deps:lib new_source_root:local
26372629
use lib::S$0;
26382630
"#,
2639-
"error: Cannot rename a non-local definition as the config for it is disabled",
2640-
false,
2641-
);
2642-
2643-
check(
2644-
"Baz",
2645-
r#"
2646-
//- /lib.rs crate:lib new_source_root:library
2647-
pub struct S;
2648-
//- /main.rs crate:main deps:lib new_source_root:local
2649-
use lib::S$0;
2650-
"#,
2651-
"use lib::Baz;\n",
2631+
"error: Cannot rename a non-local definition",
26522632
);
26532633
}
26542634

@@ -2663,8 +2643,7 @@ use core::hash::Hash;
26632643
#[derive(H$0ash)]
26642644
struct A;
26652645
"#,
2666-
"error: Cannot rename a non-local definition as the config for it is disabled",
2667-
false,
2646+
"error: Cannot rename a non-local definition",
26682647
);
26692648
}
26702649

crates/project-model/src/project_json.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
//! user explores them belongs to that extension (it's totally valid to change
5050
//! rust-project.json over time via configuration request!)
5151
52-
use base_db::{CrateDisplayName, CrateId, CrateName, Dependency, DependencyKind, Edition};
52+
use base_db::{CrateDisplayName, CrateId, CrateName, Dependency, Edition};
5353
use la_arena::RawIdx;
5454
use paths::{AbsPath, AbsPathBuf};
5555
use rustc_hash::FxHashMap;
@@ -135,7 +135,6 @@ impl ProjectJson {
135135
Dependency::new(
136136
dep_data.name,
137137
CrateId::from_raw(RawIdx::from(dep_data.krate as u32)),
138-
DependencyKind::Normal,
139138
)
140139
})
141140
.collect::<Vec<_>>(),

0 commit comments

Comments
 (0)