1
Fork 0

Treat trait fns marked with the attr as const

This commit is contained in:
Deadbeef 2021-07-06 13:05:24 +08:00
parent 3660a4e972
commit d8d4cc3b98
No known key found for this signature in database
GPG key ID: 6525773485376D92
2 changed files with 36 additions and 1 deletions

View file

@ -3,7 +3,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_middle::hir::map::blocks::FnLikeNode;
use rustc_middle::ty::query::Providers;
use rustc_middle::ty::TyCtxt;
use rustc_span::symbol::Symbol;
use rustc_span::symbol::{sym, Symbol};
use rustc_target::spec::abi::Abi;
/// Whether the `def_id` counts as const fn in your current crate, considering all active
@ -60,6 +60,9 @@ fn is_const_fn_raw(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
return true;
}
if tcx.has_attr(def_id, sym::default_method_body_is_const) {
return true;
}
// If the function itself is not annotated with `const`, it may still be a `const fn`
// if it resides in a const trait impl.
is_parent_const_impl_raw(tcx, hir_id)