Fix incorrect documentation and add track_caller to DomRefCell methods (#33111)

* Fix DomRefCell documentation about panic behaviour

Fixes https://github.com/servo/servo/issues/33099

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Annotate DomRefCell::borrow/borrow_mut with #[track_caller]

Fixes https://github.com/servo/servo/issues/27336

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2024-08-19 09:24:38 +02:00 committed by GitHub
parent 3576c02ae2
commit 84b5b64424
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -35,6 +35,12 @@ impl<T> DomRefCell<T> {
/// Unlike RefCell::borrow, this method is unsafe because it does not return a Ref, thus leaving
/// the borrow flag untouched. Mutably borrowing the RefCell while the reference returned by
/// this method is alive is undefined behaviour.
///
/// # Panics
///
/// Panics if this is called from anywhere other than the layout thread
///
/// Panics if the value is currently mutably borrowed.
#[allow(unsafe_code)]
pub unsafe fn borrow_for_layout(&self) -> &T {
assert_in_layout();
@ -50,6 +56,10 @@ impl<T> DomRefCell<T> {
/// Unlike RefCell::borrow, this method is unsafe because it does not return a Ref, thus leaving
/// the borrow flag untouched. Mutably borrowing the RefCell while the reference returned by
/// this method is alive is undefined behaviour.
///
/// # Panics
///
/// Panics if this is called from anywhere other than the script thread.
#[allow(unsafe_code, clippy::mut_from_ref)]
pub unsafe fn borrow_for_script_deallocation(&self) -> &mut T {
assert_in_script();
@ -64,6 +74,10 @@ impl<T> DomRefCell<T> {
/// Unlike RefCell::borrow, this method is unsafe because it does not return a Ref, thus leaving
/// the borrow flag untouched. Mutably borrowing the RefCell while the reference returned by
/// this method is alive is undefined behaviour.
///
/// # Panics
///
/// Panics if this is called from anywhere other than the layout thread.
#[allow(unsafe_code, clippy::mut_from_ref)]
pub unsafe fn borrow_mut_for_layout(&self) -> &mut T {
assert_in_layout();
@ -88,9 +102,8 @@ impl<T> DomRefCell<T> {
///
/// # Panics
///
/// Panics if this is called off the script thread.
///
/// Panics if the value is currently mutably borrowed.
#[track_caller]
pub fn borrow(&self) -> Ref<T> {
self.value.borrow()
}
@ -102,9 +115,8 @@ impl<T> DomRefCell<T> {
///
/// # Panics
///
/// Panics if this is called off the script thread.
///
/// Panics if the value is currently borrowed.
#[track_caller]
pub fn borrow_mut(&self) -> RefMut<T> {
self.value.borrow_mut()
}