1
Fork 0

Forbid the use of #[target_feature] on start

This commit is contained in:
Léo Lanteri Thauvin 2023-03-02 14:26:12 +01:00
parent db26693982
commit 963305bda8
5 changed files with 39 additions and 0 deletions

View file

@ -133,6 +133,9 @@ hir_analysis_target_feature_on_main = `main` function is not allowed to have `#[
hir_analysis_start_not_track_caller = `start` is not allowed to be `#[track_caller]`
.label = `start` is not allowed to be `#[track_caller]`
hir_analysis_start_not_target_feature = `start` is not allowed to have `#[target_feature]`
.label = `start` is not allowed to have `#[target_feature]`
hir_analysis_start_not_async = `start` is not allowed to be `async`
.label = `start` is not allowed to be `async`

View file

@ -344,6 +344,15 @@ pub(crate) struct StartTrackCaller {
pub start: Span,
}
#[derive(Diagnostic)]
#[diag(hir_analysis_start_not_target_feature)]
pub(crate) struct StartTargetFeature {
#[primary_span]
pub span: Span,
#[label]
pub start: Span,
}
#[derive(Diagnostic)]
#[diag(hir_analysis_start_not_async, code = "E0752")]
pub(crate) struct StartAsync {

View file

@ -378,6 +378,13 @@ fn check_start_fn_ty(tcx: TyCtxt<'_>, start_def_id: DefId) {
});
error = true;
}
if attr.has_name(sym::target_feature) {
tcx.sess.emit_err(errors::StartTargetFeature {
span: attr.span,
start: start_span,
});
error = true;
}
}
if error {