diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-12-24 00:31:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-24 00:31:40 +0100 |
| commit | e08dd9d998a697a8da791ee183db468e4de7aa72 (patch) | |
| tree | 0cac13d412d159151d28a223f1e435b4d2630919 | |
| parent | af3e06f1bf4ca49407562b1b84744e27905bea98 (diff) | |
| parent | 66ed1812cfaf3c7dd47643140f8e1380204f7234 (diff) | |
| download | rust-e08dd9d998a697a8da791ee183db468e4de7aa72.tar.gz rust-e08dd9d998a697a8da791ee183db468e4de7aa72.zip | |
Rollup merge of #105970 - Ezrashaw:add-docs+test-e0462, r=GuillaumeGomez
docs/test: add UI test and long-form error docs for E0462 Another UI test/ docs combo. r? ``@GuillaumeGomez``
| -rw-r--r-- | compiler/rustc_error_codes/src/error_codes.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_error_codes/src/error_codes/E0462.md | 32 | ||||
| -rw-r--r-- | src/test/ui/error-codes/E0462.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/error-codes/E0462.stderr | 13 | ||||
| -rw-r--r-- | src/test/ui/error-codes/auxiliary/found-staticlib.rs | 4 | ||||
| -rw-r--r-- | src/tools/tidy/src/error_codes_check.rs | 4 |
6 files changed, 63 insertions, 3 deletions
diff --git a/compiler/rustc_error_codes/src/error_codes.rs b/compiler/rustc_error_codes/src/error_codes.rs index 276f83f1f23..d05559e9244 100644 --- a/compiler/rustc_error_codes/src/error_codes.rs +++ b/compiler/rustc_error_codes/src/error_codes.rs @@ -244,6 +244,7 @@ E0457: include_str!("./error_codes/E0457.md"), E0458: include_str!("./error_codes/E0458.md"), E0459: include_str!("./error_codes/E0459.md"), E0460: include_str!("./error_codes/E0460.md"), +E0462: include_str!("./error_codes/E0462.md"), E0463: include_str!("./error_codes/E0463.md"), E0464: include_str!("./error_codes/E0464.md"), E0466: include_str!("./error_codes/E0466.md"), @@ -595,7 +596,6 @@ E0791: include_str!("./error_codes/E0791.md"), // E0427, // merged into 530 // E0456, // plugin `..` is not available for triple `..` E0461, // couldn't find crate `..` with expected target triple .. - E0462, // found staticlib `..` instead of rlib or dylib E0465, // multiple .. candidates for `..` found // E0467, // removed // E0470, // removed diff --git a/compiler/rustc_error_codes/src/error_codes/E0462.md b/compiler/rustc_error_codes/src/error_codes/E0462.md new file mode 100644 index 00000000000..4509cc6fad2 --- /dev/null +++ b/compiler/rustc_error_codes/src/error_codes/E0462.md @@ -0,0 +1,32 @@ +Found `staticlib` `..` instead of `rlib` or `dylib`. + +Consider the following two files: + +`a.rs` +```ignore (cannot-link-with-other-tests) +#![crate_type = "staticlib"] + +fn foo() {} +``` + +`main.rs` +```ignore (cannot-link-with-other-tests) +extern crate a; + +fn main() { + a::foo(); +} +``` + +Crate `a` is compiled as a `staticlib`. A `staticlib` is a system-dependant +library only intended for linking with non-Rust applications (C programs). Note +that `staticlib`s include all upstream dependencies (`core`, `std`, other user +dependencies, etc) which makes them significantly larger than `dylib`s: +prefer `staticlib` for linking with C programs. Learn more about different +`crate_type`s in [this section of the Reference](../reference/linkage.html). + +This error can be fixed by: + * Using [Cargo](../cargo/index.html), the Rust package manager, automatically + fixing this issue. + * Recompiling the crate as a `rlib` or `dylib`; formats suitable for Rust + linking. diff --git a/src/test/ui/error-codes/E0462.rs b/src/test/ui/error-codes/E0462.rs new file mode 100644 index 00000000000..f839ee783b5 --- /dev/null +++ b/src/test/ui/error-codes/E0462.rs @@ -0,0 +1,11 @@ +// aux-build:found-staticlib.rs + +// normalize-stderr-test: "\.nll/" -> "/" +// normalize-stderr-test: "\\\?\\" -> "" +// normalize-stderr-test: "(lib)?found_staticlib\.[a-z]+" -> "libfound_staticlib.somelib" + +extern crate found_staticlib; //~ ERROR E0462 + +fn main() { + found_staticlib::foo(); +} diff --git a/src/test/ui/error-codes/E0462.stderr b/src/test/ui/error-codes/E0462.stderr new file mode 100644 index 00000000000..43e27965ffc --- /dev/null +++ b/src/test/ui/error-codes/E0462.stderr @@ -0,0 +1,13 @@ +error[E0462]: found staticlib `found_staticlib` instead of rlib or dylib + --> $DIR/E0462.rs:7:1 + | +LL | extern crate found_staticlib; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: the following crate versions were found: + crate `found_staticlib`: $TEST_BUILD_DIR/error-codes/E0462/auxiliary/libfound_staticlib.somelib + = help: please recompile that crate using --crate-type lib + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0462`. diff --git a/src/test/ui/error-codes/auxiliary/found-staticlib.rs b/src/test/ui/error-codes/auxiliary/found-staticlib.rs new file mode 100644 index 00000000000..04e2c59789d --- /dev/null +++ b/src/test/ui/error-codes/auxiliary/found-staticlib.rs @@ -0,0 +1,4 @@ +// no-prefer-dynamic +#![crate_type = "staticlib"] + +pub fn foo() {} diff --git a/src/tools/tidy/src/error_codes_check.rs b/src/tools/tidy/src/error_codes_check.rs index 1b119e4113e..49fc2ceb3a2 100644 --- a/src/tools/tidy/src/error_codes_check.rs +++ b/src/tools/tidy/src/error_codes_check.rs @@ -11,8 +11,8 @@ use regex::Regex; // A few of those error codes can't be tested but all the others can and *should* be tested! const EXEMPTED_FROM_TEST: &[&str] = &[ - "E0313", "E0461", "E0462", "E0465", "E0476", "E0490", "E0514", "E0519", "E0523", "E0554", - "E0640", "E0717", "E0729", "E0789", + "E0313", "E0461", "E0465", "E0476", "E0490", "E0514", "E0519", "E0523", "E0554", "E0640", + "E0717", "E0729", "E0789", ]; // Some error codes don't have any tests apparently... |
