docs/test: add UI test and long-form error docs for E0519
This commit is contained in:
40
compiler/rustc_error_codes/src/error_codes/E0519.md
Normal file
40
compiler/rustc_error_codes/src/error_codes/E0519.md
Normal file
@@ -0,0 +1,40 @@
|
||||
The current crate is indistinguishable from one of its dependencies, in terms
|
||||
of metadata.
|
||||
|
||||
Example of erroneous code:
|
||||
|
||||
`a.rs`
|
||||
```ignore (cannot-link-with-other-tests)
|
||||
#![crate_name = "a"]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
pub fn foo() {}
|
||||
```
|
||||
|
||||
`b.rs`
|
||||
```ignore (cannot-link-with-other-tests)
|
||||
#![crate_name = "a"]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
// error: the current crate is indistinguishable from one of its dependencies:
|
||||
// it has the same crate-name `a` and was compiled with the same
|
||||
// `-C metadata` arguments. This will result in symbol conflicts between
|
||||
// the two.
|
||||
extern crate a;
|
||||
|
||||
pub fn foo() {}
|
||||
|
||||
fn bar() {
|
||||
a::foo(); // is this calling the local crate or the dependency?
|
||||
}
|
||||
```
|
||||
|
||||
The above example compiles two crates with exactly the same name and
|
||||
`crate_type` (plus any other metadata). This causes an error because it becomes
|
||||
impossible for the compiler to distinguish between symbols (`pub` item names).
|
||||
|
||||
This error can be fixed by:
|
||||
* Using [Cargo](../cargo/index.html), the Rust package manager, automatically
|
||||
fixing this issue.
|
||||
* Recompiling the crate with different metadata (different name/
|
||||
`crate_type`).
|
||||
Reference in New Issue
Block a user