Skip to content

Commit 22e69ae

Browse files
committed
there's little point in dynamic checks for promoteds
1 parent c910022 commit 22e69ae

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

promotion.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ restrictions described there are needed because we want `const` to behave the
120120
same as copying the `const` initializer everywhere the constant is used; we need
121121
the same property when promoting expressions. But we need more.
122122

123+
Note that there is no point in doing dynamic checks here. The entire point of
124+
the promotion restrictions is to avoid failing compilation for code that would
125+
have been fine without promotion. The best a dynamic check could do is tell us
126+
after the fact that we should not have promoted something, but then it is
127+
already too late -- and the dynamic checks for that are exactly the ones we are
128+
already doing for constants and statics.
129+
123130
### Panics
124131

125132
Promotion is not allowed to throw away side effects. This includes panicking.
@@ -153,9 +160,6 @@ earlier version of miri used to panic on arithmetic overflow even in release
153160
mode. This breaks promotion, because now promoting code that would work (and
154161
could not panic!) at run-time leads to a compile-time CTFE error.
155162

156-
*Dynamic check.* The Miri engine already dynamically detects panics, but the
157-
main point of promoteds is ruling them out statically.
158-
159163
### Const safety
160164

161165
We have explained what happens when evaluating a promoted panics, but what about
@@ -202,9 +206,6 @@ way when working with const-safe arguments.
202206
For this reason, only `const fn` that were explicitly marked with the
203207
`#[rustc_promotable]` attribute are subject to promotion.
204208

205-
*Dynamic check.* The Miri engine already dynamically detects const safety
206-
violations, but the main point of promoteds is ruling them out statically.
207-
208209
### Drop
209210

210211
Expressions returning "needs drop" types can never be promoted. If such an

0 commit comments

Comments
 (0)