Temporarily convert existing cfg(debug_assertions) crashes to warnings (#30578)

This commit is contained in:
Delan Azabani 2023-10-18 21:16:11 +08:00 committed by GitHub
parent 351b5036bf
commit 66258bfbbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 53 additions and 16 deletions

View file

@ -2108,9 +2108,12 @@ impl WebGLImpl {
error!("JS backtrace from failed WebGL API:\n{}", backtrace); error!("JS backtrace from failed WebGL API:\n{}", backtrace);
} }
} }
panic!( // TODO(servo#30568) revert to panic!() once underlying bug is fixed
"Unexpected WebGL error: 0x{:x} ({}) [{:?}]", log::warn!(
error, error, command "debug assertion failed! Unexpected WebGL error: 0x{:x} ({}) [{:?}]",
error,
error,
command
); );
} }
} }

View file

@ -3168,10 +3168,11 @@ where
// https://github.com/rust-lang/rust/issues/59159 // https://github.com/rust-lang/rust/issues/59159
let browsing_context_size = browsing_context.size; let browsing_context_size = browsing_context.size;
let browsing_context_is_visible = browsing_context.is_visible; let browsing_context_is_visible = browsing_context.is_visible;
debug_assert_eq!( // TODO(servo#30571) revert to debug_assert_eq!() once underlying bug is fixed
browsing_context_size, #[cfg(debug_assertions)]
load_info.window_size.initial_viewport if !(browsing_context_size == load_info.window_size.initial_viewport) {
); log::warn!("debug assertion failed! browsing_context_size == load_info.window_size.initial_viewport");
}
// Create the new pipeline, attached to the parent and push to pending changes // Create the new pipeline, attached to the parent and push to pending changes
self.new_pipeline( self.new_pipeline(

View file

@ -1762,7 +1762,11 @@ impl BlockFlow {
} }
// If you remove the might_have_floats_in conditional, this will go off. // If you remove the might_have_floats_in conditional, this will go off.
debug_assert!(!self.is_inline_flex_item()); // TODO(servo#30572) revert to debug_assert!() once underlying bug is fixed
#[cfg(debug_assertions)]
if !(!self.is_inline_flex_item()) {
log::warn!("debug assertion failed! !self.is_inline_flex_item()");
}
// Compute the available space for us, based on the actual floats. // Compute the available space for us, based on the actual floats.
let rect = self.base.floats.available_rect( let rect = self.base.floats.available_rect(

View file

@ -163,7 +163,9 @@ impl Floats {
/// Adjusts the recorded offset of the flow relative to the first float. /// Adjusts the recorded offset of the flow relative to the first float.
pub fn translate(&mut self, delta: LogicalSize<Au>) { pub fn translate(&mut self, delta: LogicalSize<Au>) {
self.offset = self.offset + delta // TODO(servo#30577) revert once underlying bug is fixed
// self.offset = self.offset + delta
self.offset = self.offset.add_or_warn(delta)
} }
/// Returns the position of the last float in flow coordinates. /// Returns the position of the last float in flow coordinates.

View file

@ -1376,7 +1376,11 @@ impl MutableOwnedFlowUtils for FlowRef {
let base = FlowRef::deref_mut(self).mut_base(); let base = FlowRef::deref_mut(self).mut_base();
for descendant_link in abs_descendants.descendant_links.iter_mut() { for descendant_link in abs_descendants.descendant_links.iter_mut() {
debug_assert!(!descendant_link.has_reached_containing_block); // TODO(servo#30573) revert to debug_assert!() once underlying bug is fixed
#[cfg(debug_assertions)]
if !(!descendant_link.has_reached_containing_block) {
log::warn!("debug assertion failed! !descendant_link.has_reached_containing_block");
}
let descendant_base = FlowRef::deref_mut(&mut descendant_link.flow).mut_base(); let descendant_base = FlowRef::deref_mut(&mut descendant_link.flow).mut_base();
descendant_base.absolute_cb.set(this.clone()); descendant_base.absolute_cb.set(this.clone());
} }

View file

@ -1517,7 +1517,9 @@ impl Fragment {
if let Some(ref inline_fragment_context) = self.inline_context { if let Some(ref inline_fragment_context) = self.inline_context {
for node in &inline_fragment_context.nodes { for node in &inline_fragment_context.nodes {
if node.style.get_box().position == Position::Relative { if node.style.get_box().position == Position::Relative {
rel_pos = rel_pos + from_style(&*node.style, containing_block_size); // TODO(servo#30577) revert once underlying bug is fixed
// rel_pos = rel_pos + from_style(&*node.style, containing_block_size);
rel_pos = rel_pos.add_or_warn(from_style(&*node.style, containing_block_size));
} }
} }
} }

View file

@ -544,7 +544,11 @@ impl StackingContext {
first first
} else { } else {
// This should only happen if the root element has `display: none` // This should only happen if the root element has `display: none`
debug_panic!("`CanvasBackground::for_root_element` should have returned `style: None`"); // TODO(servo#30569) revert to debug_panic!() once underlying bug is fixed
log::warn!(
"debug assertion failed! `CanvasBackground::for_root_element` should have returned `style: None`",
);
return;
}; };
let StackingContextContent::Fragment { fragment, scroll_node_id, containing_block, .. } let StackingContextContent::Fragment { fragment, scroll_node_id, containing_block, .. }

View file

@ -258,10 +258,11 @@ impl BoxFragment {
return PhysicalSides::new(top, right, bottom, left); return PhysicalSides::new(top, right, bottom, left);
} }
debug_assert!( // TODO(servo#30570) revert to debug_assert!() once underlying bug is fixed
position == ComputedPosition::Fixed || position == ComputedPosition::Absolute, #[cfg(debug_assertions)]
"Got unknown position." if !(position == ComputedPosition::Fixed || position == ComputedPosition::Absolute) {
); log::warn!("debug assertion failed! Got unknown position.");
}
let resolve = |value: &LengthPercentageOrAuto, container_length| { let resolve = |value: &LengthPercentageOrAuto, container_length| {
value value

View file

@ -570,6 +570,22 @@ impl<T: Add<T, Output = T>> Add for LogicalSize<T> {
} }
} }
// TODO(servo#30577) remove this once underlying bugs are fixed
impl<T: Add<T, Output = T>> LogicalSize<T> {
#[inline]
pub fn add_or_warn(self, other: LogicalSize<T>) -> LogicalSize<T> {
#[cfg(debug_assertions)]
if !(self.debug_writing_mode.mode == other.debug_writing_mode.mode) {
log::warn!("debug assertion failed! self.debug_writing_mode.mode == other.debug_writing_mode.mode");
}
LogicalSize {
debug_writing_mode: self.debug_writing_mode,
inline: self.inline + other.inline,
block: self.block + other.block,
}
}
}
impl<T: Sub<T, Output = T>> Sub for LogicalSize<T> { impl<T: Sub<T, Output = T>> Sub for LogicalSize<T> {
type Output = LogicalSize<T>; type Output = LogicalSize<T>;