-
Notifications
You must be signed in to change notification settings - Fork 12.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #106236 - Ezrashaw:add-test+docs-e0519-e0514, r=Guill…
…aumeGomez docs/test: add docs and a UI test for `E0514` and `E0519` No UI test on `E0514`, it would need to compile with a different `rustc` version. r? `@GuillaumeGomez`
- Loading branch information
Showing
6 changed files
with
94 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
Dependency compiled with different version of `rustc`. | ||
|
||
Example of erroneous code: | ||
|
||
`a.rs` | ||
```ignore (cannot-link-with-other-tests) | ||
// compiled with stable `rustc` | ||
#[crate_type = "lib"] | ||
``` | ||
|
||
`b.rs` | ||
```ignore (cannot-link-with-other-tests) | ||
// compiled with nightly `rustc` | ||
#[crate_type = "lib"] | ||
extern crate a; // error: found crate `a` compiled by an incompatible version | ||
// of rustc | ||
``` | ||
|
||
This error is caused when the version of `rustc` used to compile a crate, as | ||
stored in the binary's metadata, differs from the version of one of its | ||
dependencies. Many parts of Rust binaries are considered unstable. For | ||
instance, the Rust ABI is not stable between compiler versions. This means that | ||
the compiler cannot be sure about *how* to call a function between compiler | ||
versions, and therefore this error occurs. | ||
|
||
This error can be fixed by: | ||
* Using [Cargo](../cargo/index.html), the Rust package manager and | ||
[Rustup](https://rust-lang.github.io/rustup/), the Rust toolchain installer, | ||
automatically fixing this issue. | ||
* Recompiling the crates with a uniform `rustc` version. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
// no need to create a new aux file, we can use an existing. | ||
// aux-build: crateresolve1-1.rs | ||
|
||
// set same metadata as `crateresolve1` | ||
#![crate_name = "crateresolve1"] | ||
#![crate_type = "lib"] | ||
|
||
extern crate crateresolve1; //~ ERROR E0519 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
error[E0519]: the current crate is indistinguishable from one of its dependencies: it has the same crate-name `crateresolve1` and was compiled with the same `-C metadata` arguments. This will result in symbol conflicts between the two. | ||
--> $DIR/E0519.rs:8:1 | ||
| | ||
LL | extern crate crateresolve1; | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: aborting due to previous error | ||
|
||
For more information about this error, try `rustc --explain E0519`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters