Skip to content

Commit

Permalink
Unrolled build for rust-lang#133410
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#133410 - RalfJung:target-feature-consistency, r=compiler-errors

target check_consistency: ensure target feature string makes some basic sense
  • Loading branch information
rust-timer authored Nov 27, 2024
2 parents dff3e7c + 5d42f64 commit 40e65a4
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions compiler/rustc_target/src/spec/tests/tests_impl.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
use std::assert_matches::assert_matches;

use rustc_data_structures::fx::FxHashSet;

use super::super::*;

// Test target self-consistency and JSON encoding/decoding roundtrip.
Expand Down Expand Up @@ -173,6 +175,27 @@ impl Target {
}
_ => {}
}

// Check that the given target-features string makes some basic sense.
if !self.features.is_empty() {
let mut features_enabled = FxHashSet::default();
let mut features_disabled = FxHashSet::default();
for feat in self.features.split(',') {
if let Some(feat) = feat.strip_prefix("+") {
features_enabled.insert(feat);
if features_disabled.contains(feat) {
panic!("target feature `{feat}` is both enabled and disabled");
}
} else if let Some(feat) = feat.strip_prefix("-") {
features_disabled.insert(feat);
if features_enabled.contains(feat) {
panic!("target feature `{feat}` is both enabled and disabled");
}
} else {
panic!("target feature `{feat}` is invalid, must start with `+` or `-`");
}
}
}
}

// Add your target to the whitelist if it has `std` library
Expand Down

0 comments on commit 40e65a4

Please sign in to comment.