mirror of
https://github.com/eyre-rs/eyre.git
synced 2025-09-28 05:21:34 +00:00

RFC 2145 is in beta now, deprecating the public_in_private lint. https://rust-lang.github.io/rfcs/2145-type-privacy.html public_in_private has been superceded by three new lints. The first two are warn-by-default and the third is allow-by-default. See the excerpt below for some details. This change skips this lint in nightly and beta in favor of the new warn-by-default lints. This change revealed a bug in the toolchain config option for color-spantrace -- it doesn't exist! The lint it was guarding was never turned on. This adds a minimal build script to check for toolchain to color-spantrace. Its functionality is tested in the eyre crate, which seems sufficient to me. After this change there are only two more build warnings for eyre and color-spantrace, the future-incompat dependency warning and the more serious filename collision. <quote> Lint private_interfaces is reported when a type with visibility x is used in primary interface of an item with effective visibility y and x < y. This lint is warn-by-default. Lint private_bounds is reported when a type or trait with visibility x is used in secondary interface of an item with effective visibility y and x < y. This lint is warn-by-default. Lint unnameable_types is reported when effective visibility of a type is larger than module in which it can be named, either directly, or through reexports, or through trivial type aliases (type X = Y;, no generics on both sides). This lint is allow-by-default. Compatibility lint private_in_public is never reported and removed. </quote>
35 lines
930 B
Rust
35 lines
930 B
Rust
// These tests check our build script against rustversion.
|
|
|
|
#[rustversion::attr(not(nightly), ignore)]
|
|
#[test]
|
|
fn nightlytest() {
|
|
if !cfg!(nightly) {
|
|
panic!("nightly feature isn't set when the toolchain is nightly.");
|
|
}
|
|
if cfg!(any(beta, stable)) {
|
|
panic!("beta, stable, and nightly are mutually exclusive features.")
|
|
}
|
|
}
|
|
|
|
#[rustversion::attr(not(beta), ignore)]
|
|
#[test]
|
|
fn betatest() {
|
|
if !cfg!(beta) {
|
|
panic!("beta feature is not set when the toolchain is beta.");
|
|
}
|
|
if cfg!(any(nightly, stable)) {
|
|
panic!("beta, stable, and nightly are mutually exclusive features.")
|
|
}
|
|
}
|
|
|
|
#[rustversion::attr(not(stable), ignore)]
|
|
#[test]
|
|
fn stabletest() {
|
|
if !cfg!(stable) {
|
|
panic!("stable feature is not set when the toolchain is stable.");
|
|
}
|
|
if cfg!(any(nightly, beta)) {
|
|
panic!("beta, stable, and nightly are mutually exclusive features.")
|
|
}
|
|
}
|