Skip to content

A const-unstable function cannot call other const-unstable functions gated under a language feature gate #129656

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
RalfJung opened this issue Aug 27, 2024 · 0 comments · Fixed by #129659
Labels
A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@RalfJung
Copy link
Member

RalfJung commented Aug 27, 2024

I expected this code to compile, but it does not:

#![feature(staged_api, f128)]
#![stable(feature = "rust_test", since = "1.0.0")]

#[unstable(feature = "f128", issue = "42")]
#[rustc_const_unstable(feature = "f128", issue = "42")]
const fn my_fun() {}

#[unstable(feature = "f128", issue = "42")]
#[rustc_const_unstable(feature = "f128", issue = "42")]
const fn my_fun2() {
    my_fun()
}

Renaming f128 to f128_const makes it compile, so somehow the issue must be related to the fact that f128 is a language feature gate. For regular library stability, we support also using a language feature as a library feature gate, but for const-stability that somehow does not work.

When this gets fixed, the f128_const and f16_const features (added in #129555) can be merged into the f128 and f16 features, respectively.

Cc @oli-obk

@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Aug 27, 2024
@saethlin saethlin added A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Aug 27, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Aug 31, 2024
…1-dead

const fn stability checking: also check declared language features

Fixes rust-lang#129656

`@oli-obk` I assume it is just an oversight that this didn't use `features().declared()`? Or is there a deep reason that this must only check `declared_lib_features`?
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Aug 31, 2024
Rollup merge of rust-lang#129659 - RalfJung:const-fn-lang-feat, r=fee1-dead

const fn stability checking: also check declared language features

Fixes rust-lang#129656

`@oli-obk` I assume it is just an oversight that this didn't use `features().declared()`? Or is there a deep reason that this must only check `declared_lib_features`?
github-actions bot pushed a commit to rust-lang/miri that referenced this issue Sep 1, 2024
const fn stability checking: also check declared language features

Fixes rust-lang/rust#129656

`@oli-obk` I assume it is just an oversight that this didn't use `features().declared()`? Or is there a deep reason that this must only check `declared_lib_features`?
workingjubilee added a commit to workingjubilee/rustc that referenced this issue Oct 4, 2024
…mdev

move f16/f128 const fn under f16/f128 feature gate

The `*_const` features were added to work around rust-lang#129656, which should not be needed any more.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue Oct 5, 2024
…mdev

move f16/f128 const fn under f16/f128 feature gate

The `*_const` features were added to work around rust-lang#129656, which should not be needed any more.
rust-timer added a commit to rust-lang-ci/rust that referenced this issue Oct 5, 2024
Rollup merge of rust-lang#131256 - RalfJung:f16-f128-const, r=ibraheemdev

move f16/f128 const fn under f16/f128 feature gate

The `*_const` features were added to work around rust-lang#129656, which should not be needed any more.
flip1995 pushed a commit to flip1995/rust-clippy that referenced this issue Oct 10, 2024
move f16/f128 const fn under f16/f128 feature gate

The `*_const` features were added to work around rust-lang/rust#129656, which should not be needed any more.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
A-const-eval Area: Constant evaluation, covers all const contexts (static, const fn, ...) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
3 participants