Lint layout_2020 with clippy (#31169)

cargo clippy --fix -p layout_2020 --allow-dirty --broken-code
This commit is contained in:
Oriol Brufau 2024-01-25 10:03:31 +01:00 committed by GitHub
parent 886f6c58d4
commit 50f56affe3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
30 changed files with 224 additions and 244 deletions

View file

@ -71,11 +71,11 @@ impl BlockFormattingContext {
ends_with_whitespace: false,
};
let contents = BlockContainer::InlineFormattingContext(ifc);
let bfc = Self {
Self {
contents,
contains_floats: false,
};
bfc
}
}
}
@ -442,8 +442,8 @@ fn preserve_segment_break() -> bool {
///
/// Returns the transformed text as a [String] and also whether or not the input had
/// any uncollapsible content.
fn collapse_and_transform_whitespace<'text>(
input: &'text str,
fn collapse_and_transform_whitespace(
input: &str,
white_space: WhiteSpace,
trim_beginning_white_space: bool,
) -> (String, bool) {

View file

@ -181,7 +181,7 @@ impl<'a> PlacementAmongFloats<'a> {
min_inline_end = min_inline_end.min(right);
}
}
return (max_inline_start, min_inline_end);
(max_inline_start, min_inline_end)
}
/// Find the total inline size provided by the current set of bands under consideration.
@ -389,7 +389,7 @@ impl FloatContext {
// Find the first band this float fits in.
let mut first_band = self.bands.find(ceiling).unwrap();
while !first_band.object_fits(&object, &self.containing_block_info) {
while !first_band.object_fits(object, &self.containing_block_info) {
let next_band = self.bands.find_next(first_band.top).unwrap();
if next_band.top == MAX_AU {
break;
@ -426,7 +426,7 @@ impl FloatContext {
pub fn add_float(&mut self, new_float: &PlacementInfo) -> LogicalVec2<Au> {
// Place the float.
let ceiling = self.ceiling();
let new_float_origin = self.place_object(&new_float, ceiling);
let new_float_origin = self.place_object(new_float, ceiling);
let new_float_extent = match new_float.side {
FloatSide::Left => new_float_origin.inline + new_float.size.inline,
FloatSide::Right => new_float_origin.inline,
@ -668,6 +668,12 @@ impl FloatBandTree {
}
}
impl Default for FloatBandTree {
fn default() -> Self {
Self::new()
}
}
impl FloatBandNode {
fn new(band: FloatBand) -> FloatBandNode {
FloatBandNode {
@ -681,7 +687,7 @@ impl FloatBandNode {
/// Sets the side values of all bands within the given half-open range to be at least
/// `new_value`.
fn set_range(&self, range: &Range<Au>, side: FloatSide, new_value: Au) -> Arc<FloatBandNode> {
let mut new_band = self.band.clone();
let mut new_band = self.band;
if self.band.top >= range.start && self.band.top < range.end {
match side {
FloatSide::Left => {
@ -742,7 +748,7 @@ impl FloatBandLink {
return Some(band);
}
Some(this.band.clone())
Some(this.band)
}
/// Returns the first band whose top is strictly greater than the given `block_position`.
@ -762,7 +768,7 @@ impl FloatBandLink {
return Some(band);
}
Some(this.band.clone())
Some(this.band)
}
/// Inserts a new band into the tree. If the band has the same level as a pre-existing one,
@ -801,11 +807,11 @@ impl FloatBandLink {
return FloatBandLink(Some(Arc::new(FloatBandNode {
level: this.level,
left: left.left.clone(),
band: left.band.clone(),
band: left.band,
right: FloatBandLink(Some(Arc::new(FloatBandNode {
level: this.level,
left: left.right.clone(),
band: this.band.clone(),
band: this.band,
right: this.right.clone(),
}))),
})));
@ -834,10 +840,10 @@ impl FloatBandLink {
left: FloatBandLink(Some(Arc::new(FloatBandNode {
level: this.level,
left: this.left.clone(),
band: this.band.clone(),
band: this.band,
right: right.left.clone(),
}))),
band: right.band.clone(),
band: right.band,
right: right.right.clone(),
})));
}
@ -889,7 +895,7 @@ impl FloatBox {
layout_context,
containing_block,
&style,
|mut positioning_context| {
|positioning_context| {
// Margin is computed this way regardless of whether the element is replaced
// or non-replaced.
let pbm = style.padding_border_margin(containing_block);
@ -901,13 +907,13 @@ impl FloatBox {
IndependentFormattingContext::NonReplaced(ref mut non_replaced) => {
// Calculate inline size.
// https://drafts.csswg.org/css2/#float-width
let box_size = non_replaced.style.content_box_size(&containing_block, &pbm);
let box_size = non_replaced.style.content_box_size(containing_block, &pbm);
let max_box_size = non_replaced
.style
.content_max_box_size(&containing_block, &pbm);
.content_max_box_size(containing_block, &pbm);
let min_box_size = non_replaced
.style
.content_min_box_size(&containing_block, &pbm)
.content_min_box_size(containing_block, &pbm)
.auto_is(Length::zero);
let tentative_inline_size = box_size.inline.auto_is(|| {
@ -931,7 +937,7 @@ impl FloatBox {
};
let independent_layout = non_replaced.layout(
layout_context,
&mut positioning_context,
positioning_context,
&containing_block_for_children,
);
content_size = LogicalVec2 {
@ -946,7 +952,7 @@ impl FloatBox {
// https://drafts.csswg.org/css2/#float-replaced-width
// https://drafts.csswg.org/css2/#inline-replaced-height
content_size = replaced.contents.used_size_as_if_inline_element(
&containing_block,
containing_block,
&replaced.style,
None,
&pbm,
@ -1060,7 +1066,7 @@ impl SequentialLayoutState {
// Adjoin `current_margin` and `block_start_margin` since there is no clearance.
self.bfc_relative_block_position +
self.current_margin
.adjoin(&block_start_margin)
.adjoin(block_start_margin)
.solve()
.into()
}
@ -1088,7 +1094,7 @@ impl SequentialLayoutState {
// Calculate the hypothetical position where the element's top border edge
// would have been if the element's `clear` property had been `none`.
let hypothetical_block_position = self.position_without_clearance(&block_start_margin);
let hypothetical_block_position = self.position_without_clearance(block_start_margin);
// Check if the hypothetical position is past the relevant floats,
// in that case we don't need to add clearance.
@ -1121,9 +1127,8 @@ impl SequentialLayoutState {
clear: Clear,
block_start_margin: &CollapsedMargin,
) -> Option<Au> {
return self
.calculate_clear_position(clear, &block_start_margin)
.map(|offset| offset - self.position_with_zero_clearance(&block_start_margin));
self.calculate_clear_position(clear, block_start_margin)
.map(|offset| offset - self.position_with_zero_clearance(block_start_margin))
}
/// A block that is replaced or establishes an independent formatting context can't overlap floats,
@ -1144,15 +1149,15 @@ impl SequentialLayoutState {
// First compute the clear position required by the 'clear' property.
// The code below may then add extra clearance when the element can't fit
// next to floats not covered by 'clear'.
let clear_position = self.calculate_clear_position(clear, &block_start_margin);
let clear_position = self.calculate_clear_position(clear, block_start_margin);
let ceiling =
clear_position.unwrap_or_else(|| self.position_without_clearance(&block_start_margin));
clear_position.unwrap_or_else(|| self.position_without_clearance(block_start_margin));
let mut placement = PlacementAmongFloats::new(&self.floats, ceiling, object_size, pbm);
let placement_rect = placement.place();
let position = &placement_rect.start_corner;
let has_clearance = clear_position.is_some() || position.block > ceiling;
let clearance = if has_clearance {
Some(position.block - self.position_with_zero_clearance(&block_start_margin))
Some(position.block - self.position_with_zero_clearance(block_start_margin))
} else {
None
};

View file

@ -149,8 +149,8 @@ struct LineUnderConstruction {
impl LineUnderConstruction {
fn new(start_position: LogicalVec2<Length>) -> Self {
Self {
inline_position: start_position.inline.clone(),
start_position: start_position,
inline_position: start_position.inline,
start_position,
max_block_size: LineBlockSizes::zero(),
has_content: false,
has_floats_waiting_to_be_placed: false,
@ -273,7 +273,7 @@ impl LineBlockSizes {
self.baseline_relative_size_for_line_height.as_ref(),
other.baseline_relative_size_for_line_height.as_ref(),
) {
(Some(our_size), Some(other_size)) => Some(our_size.max(&other_size)),
(Some(our_size), Some(other_size)) => Some(our_size.max(other_size)),
(our_size, other_size) => our_size.or(other_size).cloned(),
};
Self {
@ -290,9 +290,9 @@ impl LineBlockSizes {
}
fn adjust_for_baseline_offset(&mut self, baseline_offset: Au) {
self.baseline_relative_size_for_line_height
.as_mut()
.map(|size| size.adjust_for_nested_baseline_offset(baseline_offset));
if let Some(size) = self.baseline_relative_size_for_line_height.as_mut() {
size.adjust_for_nested_baseline_offset(baseline_offset)
}
self.size_for_baseline_positioning
.adjust_for_nested_baseline_offset(baseline_offset);
}
@ -460,11 +460,7 @@ impl UnbreakableSegmentUnderConstruction {
}
let segment_items = mem::take(&mut self.line_items);
self.line_items = hierarchy
.into_iter()
.rev()
.chain(segment_items.into_iter())
.collect();
self.line_items = hierarchy.into_iter().rev().chain(segment_items).collect();
}
}
@ -637,7 +633,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
fn start_inline_box(&mut self, inline_box: &InlineBox) {
let mut inline_box_state = InlineBoxContainerState::new(
inline_box,
&self.containing_block,
self.containing_block,
self.layout_context,
self.current_inline_container_state(),
inline_box.is_last_fragment,
@ -737,7 +733,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
// This amount includes both the block size of the line and any extra space
// added to move the line down in order to avoid overlapping floats.
let increment = block_end_position - self.current_line.start_position.block.into();
sequential_layout_state.advance_block_position(increment.into());
sequential_layout_state.advance_block_position(increment);
}
let mut line_items = std::mem::take(&mut self.current_line.line_items);
@ -758,7 +754,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
parent_offset: LogicalVec2::zero(),
baseline_offset,
ifc_containing_block: self.containing_block,
positioning_context: &mut self.positioning_context,
positioning_context: self.positioning_context,
justification_adjustment,
line_metrics: &LineMetrics {
block_offset: block_start_position.into(),
@ -1002,9 +998,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
.floats
.containing_block_info
.inline_start,
block: sequential_layout_state
.current_containing_block_offset()
.into(),
block: sequential_layout_state.current_containing_block_offset(),
};
let ceiling = self
@ -1012,7 +1006,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
.line_block_start_considering_placement_among_floats();
let mut placement = PlacementAmongFloats::new(
&sequential_layout_state.floats,
ceiling + ifc_offset_in_float_container.block.into(),
ceiling + ifc_offset_in_float_container.block,
LogicalVec2 {
inline: potential_line_size.inline.into(),
block: potential_line_size.block.into(),
@ -1154,7 +1148,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
font_key: FontInstanceKey,
) {
self.current_line_segment.justification_opportunities +=
glyph_store.total_word_separators() as usize;
glyph_store.total_word_separators();
let inline_advance = Length::from(glyph_store.total_advance());
let preserve_spaces = parent_style
@ -1194,7 +1188,7 @@ impl<'a, 'b> InlineFormattingContextState<'a, 'b> {
self.push_line_item_to_unbreakable_segment(LineItem::TextRun(TextRunLineItem {
text: vec![glyph_store],
base_fragment_info: base_fragment_info.into(),
base_fragment_info,
parent_style: parent_style.clone(),
font_metrics: font_metrics.clone(),
font_key,
@ -1531,12 +1525,12 @@ impl InlineFormattingContext {
content_block_size == Length::zero() &&
collapsible_with_parent_start_margin.0;
return FlowLayout {
FlowLayout {
fragments: ifc.fragments,
content_block_size,
collapsible_margins_in_children,
last_inflow_baseline_offset: ifc.last_baseline_offset,
};
}
}
/// Return true if this [InlineFormattingContext] is empty for the purposes of ignoring
@ -1546,7 +1540,7 @@ impl InlineFormattingContext {
fn inline_level_boxes_are_empty(boxes: &[ArcRefCell<InlineLevelBox>]) -> bool {
boxes
.iter()
.all(|inline_level_box| inline_level_box_is_empty(&*inline_level_box.borrow()))
.all(|inline_level_box| inline_level_box_is_empty(&inline_level_box.borrow()))
}
fn inline_level_box_is_empty(inline_level_box: &InlineLevelBox) -> bool {
@ -1660,8 +1654,8 @@ impl InlineContainerState {
if style.get_inherited_text().line_height != LineHeight::Normal {
let half_leading =
(Au::from_f32_px(line_height.px()) - (ascent + descent)).scale_by(0.5);
ascent = ascent + half_leading;
descent = descent + half_leading;
ascent += half_leading;
descent += half_leading;
}
LineBlockSizes {
@ -1675,7 +1669,7 @@ impl InlineContainerState {
Self::get_block_sizes_with_style(
&self.style,
font_metrics,
line_height(&self.style, &font_metrics),
line_height(&self.style, font_metrics),
)
}
@ -1718,9 +1712,8 @@ impl InlineContainerState {
.scale_by(0.5)
},
GenericVerticalAlign::Keyword(VerticalAlignKeyword::TextBottom) => {
(self.font_metrics.descent -
child_block_size.size_for_baseline_positioning.descent)
.into()
self.font_metrics.descent -
child_block_size.size_for_baseline_positioning.descent
},
GenericVerticalAlign::Length(length_percentage) => {
Au::from_f32_px(-length_percentage.resolve(child_block_size.line_height).px())
@ -1778,7 +1771,7 @@ impl IndependentFormattingContext {
ifc: &mut InlineFormattingContextState,
) {
let style = self.style();
let pbm = style.padding_border_margin(&ifc.containing_block);
let pbm = style.padding_border_margin(ifc.containing_block);
let margin = pbm.margin.auto_is(Length::zero);
let pbm_sums = &(&pbm.padding + &pbm.border) + &margin;
let mut child_positioning_context = None;
@ -1816,13 +1809,13 @@ impl IndependentFormattingContext {
IndependentFormattingContext::NonReplaced(non_replaced) => {
let box_size = non_replaced
.style
.content_box_size(&ifc.containing_block, &pbm);
.content_box_size(ifc.containing_block, &pbm);
let max_box_size = non_replaced
.style
.content_max_box_size(&ifc.containing_block, &pbm);
.content_max_box_size(ifc.containing_block, &pbm);
let min_box_size = non_replaced
.style
.content_min_box_size(&ifc.containing_block, &pbm)
.content_min_box_size(ifc.containing_block, &pbm)
.auto_is(Length::zero);
// https://drafts.csswg.org/css2/visudet.html#inlineblock-width
@ -2148,7 +2141,7 @@ impl FloatBox {
}
fn place_pending_floats(ifc: &mut InlineFormattingContextState, line_items: &mut Vec<LineItem>) {
for item in line_items.into_iter() {
for item in line_items.iter_mut() {
match item {
LineItem::Float(float_line_item) => {
if float_line_item.needs_placement {

View file

@ -507,7 +507,7 @@ impl AtomicLineItem {
// This needs to be added to the calculated block and inline positions.
self.fragment.content_rect.start_corner.inline += state.inline_position;
self.fragment.content_rect.start_corner.block +=
self.calculate_block_start(&state.line_metrics);
self.calculate_block_start(state.line_metrics);
// Make the final result relative to the parent box.
self.fragment.content_rect.start_corner =

View file

@ -97,7 +97,7 @@ impl BlockLevelBox {
containing_block: &ContainingBlock,
) -> bool {
let style = match self {
BlockLevelBox::SameFormattingContextBlock { ref style, .. } => &style,
BlockLevelBox::SameFormattingContextBlock { ref style, .. } => style,
BlockLevelBox::OutOfFlowAbsolutelyPositionedBox(_) |
BlockLevelBox::OutOfFlowFloatBox(_) => return true,
BlockLevelBox::Independent(ref context) => {
@ -156,7 +156,7 @@ impl BlockLevelBox {
};
if !Self::find_block_margin_collapsing_with_parent_from_slice(
&child_boxes,
child_boxes,
collected_margin,
&containing_block_for_children,
) {
@ -276,7 +276,7 @@ fn calculate_inline_content_size_for_block_level_boxes(
BlockLevelBox::SameFormattingContextBlock {
style, contents, ..
} => {
let size = sizing::outer_inline(&style, writing_mode, || {
let size = sizing::outer_inline(style, writing_mode, || {
contents.inline_content_sizes(layout_context, style.writing_mode)
})
.max(ContentSizes::zero());
@ -674,7 +674,7 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
if !collapsible_with_parent_start_margin && start_margin_can_collapse_with_children {
if let BlockContainer::BlockLevelBoxes(child_boxes) = contents {
BlockLevelBox::find_block_margin_collapsing_with_parent_from_slice(
&child_boxes,
child_boxes,
&mut block_start_margin,
containing_block,
);
@ -729,7 +729,7 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
layout_context,
positioning_context,
&containing_block_for_children,
sequential_layout_state.as_mut().map(|x| &mut **x),
sequential_layout_state.as_deref_mut(),
CollapsibleWithParentStartMargin(start_margin_can_collapse_with_children),
);
let mut content_block_size = flow_layout.content_block_size;
@ -798,8 +798,7 @@ fn layout_in_flow_non_replaced_block_level_same_formatting_context(
start_corner: LogicalVec2 {
block: (pbm.padding.block_start +
pbm.border.block_start +
clearance.unwrap_or_else(Au::zero).into())
.into(),
clearance.unwrap_or_else(Au::zero).into()),
inline: pbm.padding.inline_start + pbm.border.inline_start + margin.inline_start,
},
size: LogicalVec2 {
@ -965,8 +964,8 @@ impl NonReplacedFormattingContext {
(clearance, (margin_inline_start, margin_inline_end)) =
solve_clearance_and_inline_margins_avoiding_floats(
&sequential_layout_state,
&containing_block,
sequential_layout_state,
containing_block,
&collapsed_margin_block_start,
&pbm,
&content_size + &pbm.padding_border_sums,
@ -1062,8 +1061,8 @@ impl NonReplacedFormattingContext {
};
(margin_inline_start, margin_inline_end) = solve_inline_margins_avoiding_floats(
&sequential_layout_state,
&containing_block,
sequential_layout_state,
containing_block,
&pbm,
content_size.inline + pbm.padding_border_sums.inline,
placement_rect.into(),
@ -1153,12 +1152,12 @@ fn layout_in_flow_replaced_block_level<'a>(
let size = &content_size + &pbm.padding_border_sums;
(clearance, (margin_inline_start, margin_inline_end)) =
solve_clearance_and_inline_margins_avoiding_floats(
&sequential_layout_state,
&containing_block,
sequential_layout_state,
containing_block,
&collapsed_margin_block_start,
&pbm,
size.clone(),
&style,
style,
);
// Clearance prevents margin collapse between this block and previous ones,
@ -1305,14 +1304,14 @@ fn solve_clearance_and_inline_margins_avoiding_floats(
let (clearance, placement_rect) = sequential_layout_state
.calculate_clearance_and_inline_adjustment(
style.get_box().clear,
&block_start_margin,
&pbm,
block_start_margin,
pbm,
size.clone().into(),
);
let inline_margins = solve_inline_margins_avoiding_floats(
&sequential_layout_state,
&containing_block,
&pbm,
sequential_layout_state,
containing_block,
pbm,
size.inline,
placement_rect.into(),
);

View file

@ -43,7 +43,7 @@ impl BoxTree {
where
Node: 'dom + Copy + LayoutNode<'dom> + Send + Sync,
{
let boxes = construct_for_root_element(&context, root_element);
let boxes = construct_for_root_element(context, root_element);
// Zero box for `:root { display: none }`, one for the root element otherwise.
assert!(boxes.len() <= 1);
@ -291,7 +291,7 @@ impl BoxTree {
let mut root_fragments = independent_layout
.fragments
.into_iter()
.map(|fragment| ArcRefCell::new(fragment))
.map(ArcRefCell::new)
.collect::<Vec<_>>();
// Zero box for `:root { display: none }`, one for the root element otherwise.