Skip to content

Commit

Permalink
Forbid #[target_feature] on safe default implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
LeSeulArtichaut committed Mar 10, 2023
1 parent 104f430 commit ad2bcb5
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
2 changes: 1 addition & 1 deletion compiler/rustc_codegen_ssa/src/target_features.rs
Expand Up @@ -442,7 +442,7 @@ fn asm_target_features(tcx: TyCtxt<'_>, did: DefId) -> &FxIndexSet<Symbol> {
pub fn check_target_feature_trait_unsafe(tcx: TyCtxt<'_>, id: LocalDefId, attr_span: Span) {
if let DefKind::AssocFn = tcx.def_kind(id) {
let parent_id = tcx.local_parent(id);
if let DefKind::Impl { of_trait: true } = tcx.def_kind(parent_id) {
if let DefKind::Trait | DefKind::Impl { of_trait: true } = tcx.def_kind(parent_id) {
tcx.sess
.struct_span_err(
attr_span,
Expand Down
6 changes: 6 additions & 0 deletions tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.rs
Expand Up @@ -18,4 +18,10 @@ impl Foo for Bar {
unsafe fn unsf_foo(&self) {}
}

trait Qux {
#[target_feature(enable = "sse2")]
//~^ ERROR cannot be applied to safe trait method
fn foo(&self) {}
}

fn main() {}
11 changes: 10 additions & 1 deletion tests/ui/rfcs/rfc-2396-target_feature-11/trait-impl.stderr
@@ -1,3 +1,12 @@
error: `#[target_feature(..)]` cannot be applied to safe trait method
--> $DIR/trait-impl.rs:22:5
|
LL | #[target_feature(enable = "sse2")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot be applied to safe trait method
LL |
LL | fn foo(&self) {}
| ------------- not an `unsafe` function

error: `#[target_feature(..)]` cannot be applied to safe trait method
--> $DIR/trait-impl.rs:13:5
|
Expand All @@ -7,5 +16,5 @@ LL |
LL | fn foo(&self) {}
| ------------- not an `unsafe` function

error: aborting due to previous error
error: aborting due to 2 previous errors

0 comments on commit ad2bcb5

Please sign in to comment.