diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs index 9273c2103d442..224f30f96a295 100644 --- a/compiler/rustc_mir_transform/src/lib.rs +++ b/compiler/rustc_mir_transform/src/lib.rs @@ -437,7 +437,7 @@ fn mir_promoted( let const_qualifs = match tcx.def_kind(def) { DefKind::Fn | DefKind::AssocFn | DefKind::Closure - if tcx.constness(def) == hir::Constness::Const => + if tcx.hir_body_const_context(def).is_some() => { tcx.mir_const_qualif(def) } diff --git a/tests/ui/traits/const-traits/issue-153891.rs b/tests/ui/traits/const-traits/issue-153891.rs new file mode 100644 index 0000000000000..5fd614fd41c5e --- /dev/null +++ b/tests/ui/traits/const-traits/issue-153891.rs @@ -0,0 +1,11 @@ +// Regression test for issue #153891. +#![feature(const_closures)] + +trait Tr { + const fn test() { + //~^ ERROR functions in traits cannot be declared const + (const || {})() + } +} + +fn main() {} diff --git a/tests/ui/traits/const-traits/issue-153891.stderr b/tests/ui/traits/const-traits/issue-153891.stderr new file mode 100644 index 0000000000000..0f4a1eb5eb915 --- /dev/null +++ b/tests/ui/traits/const-traits/issue-153891.stderr @@ -0,0 +1,12 @@ +error[E0379]: functions in traits cannot be declared const + --> $DIR/issue-153891.rs:5:5 + | +LL | const fn test() { + | ^^^^^- + | | + | functions in traits cannot be const + | help: remove the `const` + +error: aborting due to 1 previous error + +For more information about this error, try `rustc --explain E0379`.