mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Add extended error message for E0523
Adds the extended error documentation for E0523 to indicate that the error is no longer produced by the compiler. Update the E0464 documentation to include example code that produces the error. Remove the error message E0523 from the compiler and replace it with an internal compiler error.
This commit is contained in:
parent
0c13c17250
commit
2bcd4e256a
@ -286,6 +286,7 @@ E0519: include_str!("./error_codes/E0519.md"),
|
||||
E0520: include_str!("./error_codes/E0520.md"),
|
||||
E0521: include_str!("./error_codes/E0521.md"),
|
||||
E0522: include_str!("./error_codes/E0522.md"),
|
||||
E0523: include_str!("./error_codes/E0523.md"),
|
||||
E0524: include_str!("./error_codes/E0524.md"),
|
||||
E0525: include_str!("./error_codes/E0525.md"),
|
||||
E0527: include_str!("./error_codes/E0527.md"),
|
||||
@ -622,7 +623,6 @@ E0793: include_str!("./error_codes/E0793.md"),
|
||||
// E0488, // lifetime of variable does not enclose its declaration
|
||||
// E0489, // type/lifetime parameter not in scope here
|
||||
// E0490, // removed: unreachable
|
||||
E0523, // two dependencies have same (crate-name, disambiguator) but different SVH
|
||||
// E0526, // shuffle indices are not constant
|
||||
// E0540, // multiple rustc_deprecated attributes
|
||||
// E0548, // replaced with a generic attribute input check
|
||||
|
@ -1,6 +1,21 @@
|
||||
The compiler found multiple library files with the requested crate name.
|
||||
|
||||
```compile_fail
|
||||
// aux-build:crateresolve-1.rs
|
||||
// aux-build:crateresolve-2.rs
|
||||
// aux-build:crateresolve-3.rs
|
||||
|
||||
extern crate crateresolve;
|
||||
//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found
|
||||
|
||||
fn main() {}
|
||||
```
|
||||
|
||||
This error can occur in several different cases -- for example, when using
|
||||
`extern crate` or passing `--extern` options without crate paths. It can also be
|
||||
caused by caching issues with the build directory, in which case `cargo clean`
|
||||
may help.
|
||||
|
||||
In the above example, there are three different library files, all of which
|
||||
define the same crate name. Without providing a full path, there is no way for
|
||||
the compiler to know which crate it should use.
|
||||
|
25
compiler/rustc_error_codes/src/error_codes/E0523.md
Normal file
25
compiler/rustc_error_codes/src/error_codes/E0523.md
Normal file
@ -0,0 +1,25 @@
|
||||
#### Note: this error code is no longer emitted by the compiler.
|
||||
|
||||
The compiler found multiple library files with the requested crate name.
|
||||
|
||||
```compile_fail
|
||||
// aux-build:crateresolve-1.rs
|
||||
// aux-build:crateresolve-2.rs
|
||||
// aux-build:crateresolve-3.rs
|
||||
|
||||
extern crate crateresolve;
|
||||
//~^ ERROR multiple candidates for `rlib` dependency `crateresolve` found
|
||||
|
||||
fn main() {}
|
||||
```
|
||||
|
||||
This error can occur in several different cases -- for example, when using
|
||||
`extern crate` or passing `--extern` options without crate paths. It can also be
|
||||
caused by caching issues with the build directory, in which case `cargo clean`
|
||||
may help.
|
||||
|
||||
In the above example, there are three different library files, all of which
|
||||
define the same crate name. Without providing a full path, there is no way for
|
||||
the compiler to know which crate it should use.
|
||||
|
||||
*Note that E0523 has been merged into E0464.*
|
@ -356,7 +356,12 @@ impl<'a> CrateLoader<'a> {
|
||||
for (_, other) in self.cstore.iter_crate_data() {
|
||||
// Same stable crate id but different SVH
|
||||
if other.stable_crate_id() == root.stable_crate_id() && other.hash() != root.hash() {
|
||||
return Err(CrateError::SymbolConflictsOthers(root.name()));
|
||||
bug!(
|
||||
"Previously returned E0523 here. \
|
||||
See https://github.com/rust-lang/rust/pull/100599 for additional discussion.\
|
||||
root.name() = {}.",
|
||||
root.name()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -511,14 +511,6 @@ pub struct SymbolConflictsCurrent {
|
||||
pub crate_name: Symbol,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_symbol_conflicts_others, code = "E0523")]
|
||||
pub struct SymbolConflictsOthers {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub crate_name: Symbol,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_stable_crate_id_collision)]
|
||||
pub struct StableCrateIdCollision {
|
||||
|
@ -945,7 +945,6 @@ pub(crate) enum CrateError {
|
||||
ExternLocationNotFile(Symbol, PathBuf),
|
||||
MultipleCandidates(Symbol, CrateFlavor, Vec<PathBuf>),
|
||||
SymbolConflictsCurrent(Symbol),
|
||||
SymbolConflictsOthers(Symbol),
|
||||
StableCrateIdCollision(Symbol, Symbol),
|
||||
DlOpen(String),
|
||||
DlSym(String),
|
||||
@ -989,9 +988,6 @@ impl CrateError {
|
||||
CrateError::SymbolConflictsCurrent(root_name) => {
|
||||
sess.emit_err(errors::SymbolConflictsCurrent { span, crate_name: root_name });
|
||||
}
|
||||
CrateError::SymbolConflictsOthers(root_name) => {
|
||||
sess.emit_err(errors::SymbolConflictsOthers { span, crate_name: root_name });
|
||||
}
|
||||
CrateError::StableCrateIdCollision(crate_name0, crate_name1) => {
|
||||
sess.emit_err(errors::StableCrateIdCollision { span, crate_name0, crate_name1 });
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ const IGNORE_DOCTEST_CHECK: &[&str] = &["E0464", "E0570", "E0601", "E0602", "E06
|
||||
|
||||
// Error codes that don't yet have a UI test. This list will eventually be removed.
|
||||
const IGNORE_UI_TEST_CHECK: &[&str] =
|
||||
&["E0461", "E0465", "E0476", "E0514", "E0523", "E0554", "E0640", "E0717", "E0729"];
|
||||
&["E0461", "E0465", "E0476", "E0514", "E0554", "E0640", "E0717", "E0729"];
|
||||
|
||||
macro_rules! verbose_print {
|
||||
($verbose:expr, $($fmt:tt)*) => {
|
||||
|
14
tests/ui/error-codes/E0523.rs
Normal file
14
tests/ui/error-codes/E0523.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// aux-build:crateresolve1-1.rs
|
||||
// aux-build:crateresolve1-2.rs
|
||||
// aux-build:crateresolve1-3.rs
|
||||
|
||||
// normalize-stderr-test: "\.nll/" -> "/"
|
||||
// normalize-stderr-test: "\\\?\\" -> ""
|
||||
// normalize-stderr-test: "(lib)?crateresolve1-([123])\.[a-z]+" -> "libcrateresolve1-$2.somelib"
|
||||
|
||||
// NOTE: This test is duplicated from `tests/ui/crate-loading/crateresolve1.rs`.
|
||||
|
||||
extern crate crateresolve1;
|
||||
//~^ ERROR multiple candidates for `rlib` dependency `crateresolve1` found
|
||||
|
||||
fn main() {}
|
13
tests/ui/error-codes/E0523.stderr
Normal file
13
tests/ui/error-codes/E0523.stderr
Normal file
@ -0,0 +1,13 @@
|
||||
error[E0464]: multiple candidates for `rlib` dependency `crateresolve1` found
|
||||
--> $DIR/E0523.rs:11:1
|
||||
|
|
||||
LL | extern crate crateresolve1;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: candidate #1: $TEST_BUILD_DIR/error-codes/E0523/auxiliary/libcrateresolve1-1.somelib
|
||||
= note: candidate #2: $TEST_BUILD_DIR/error-codes/E0523/auxiliary/libcrateresolve1-2.somelib
|
||||
= note: candidate #3: $TEST_BUILD_DIR/error-codes/E0523/auxiliary/libcrateresolve1-3.somelib
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0464`.
|
Loading…
Reference in New Issue
Block a user