-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document BinOp::is_checkable #109058
Document BinOp::is_checkable #109058
Conversation
r? @jackh726 (rustbot has picked a reviewer for you, use r? to override) |
@bors r+ rollup |
Document BinOp::is_checkable
@@ -1999,6 +1999,9 @@ impl BorrowKind { | |||
} | |||
|
|||
impl BinOp { | |||
/// The checkable operators are those whose overflow checking behavior is controlled by | |||
/// -Coverflow-checks option. The remaining operators have either no overflow conditions (e.g., | |||
/// BitAnd, BitOr, BitXor) or are always checked for overflow (e.g., Div, Rem). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UnOp does not have is_checkable. Given these docs, that seems surprising? Neg
behaves like the 'checkable' bin ops, doesn't it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UnOp::Neg would be checkable. What do you find surprising about that in context of this documentation?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The surprising part is that there is no such function on UnOp
-- that indicates some asymmetry in how UnOp vs BinOp are handled.
Should we also have this on UnOp, and then replace the existing direct matching on Neg
that I assume is happening with an is_checkable call?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Negation has a dedicated assertion kind for it, so there is no need for UnOp::is_checkable (see git grep -C20 is_checkable
).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does this have to do with assertion kinds? I was thinking of MIR building.
Though with #108282, MIR building does not use this function any more anyway. Then it's only the codegen backends and yeah there it has to do with assertion kinds.
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#108419 (Stabilize `atomic_as_ptr`) - rust-lang#108507 (use `as_ptr` to determine the address of atomics) - rust-lang#108607 (Don't use fd-lock on Solaris in bootstrap) - rust-lang#108830 (Treat projections with infer as placeholder during fast reject in new solver) - rust-lang#109055 (create `config::tests::detect_src_and_out` test for bootstrap) - rust-lang#109058 (Document BinOp::is_checkable) - rust-lang#109081 (simd-wide-sum test: adapt for LLVM 17 codegen change) - rust-lang#109083 (Update books) - rust-lang#109088 (Gracefully handle `#[target_feature]` on statics) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
No description provided.