Skip to content
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

style: Use the ? operator for Option #19537

Merged
merged 1 commit into from Dec 9, 2017
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -1750,22 +1750,17 @@ impl Fragment {

let character_breaking_strategy =
text_fragment_info.run.character_slices_in_range(&text_fragment_info.range);
match self.calculate_split_position_using_breaking_strategy(character_breaking_strategy,
max_inline_size,
SplitOptions::empty()) {
None => None,
Some(split_info) => {
match split_info.inline_start {
None => None,
Some(split) => {
Some(TruncationResult {
split: split,
text_run: split_info.text_run.clone(),
})
}
}
}
}

let split_info = self.calculate_split_position_using_breaking_strategy(
character_breaking_strategy,
max_inline_size,
SplitOptions::empty())?;

let split = split_info.inline_start?;
Some(TruncationResult {
split: split,
text_run: split_info.text_run.clone(),
})
}

/// A helper method that uses the breaking strategy described by `slice_iterator` (at present,
@@ -339,12 +339,7 @@ impl PropertyAnimation {
longhand,
old_style,
new_style,
);

let animated_property = match animated_property {
Some(p) => p,
None => return None,
};
)?;

let property_animation = PropertyAnimation {
property: animated_property,
@@ -169,10 +169,8 @@ impl<E: TElement> StyleBloom<E> {
/// Pop the last element in the bloom filter and return it.
#[inline]
fn pop(&mut self) -> Option<E> {
let (popped_element, num_hashes) = match self.elements.pop() {
None => return None,
Some(x) => (*x.element, x.num_hashes),
};
let PushedElement { element, num_hashes } = self.elements.pop()?;
let popped_element = *element;

// Verify that the pushed hashes match the ones we'd get from the element.
let mut expected_hashes = vec![];
@@ -153,10 +153,7 @@ where
K: Borrow<Q>,
Q: PrecomputedHash + Hash + Eq,
{
let index = match self.index.iter().position(|k| k.borrow() == key) {
Some(p) => p,
None => return None,
};
let index = self.index.iter().position(|k| k.borrow() == key)?;
self.index.remove(index);
self.values.remove(key)
}
@@ -194,10 +191,7 @@ where
type Item = (&'a K, &'a V);

fn next(&mut self) -> Option<Self::Item> {
let key = match self.inner.index.get(self.pos) {
Some(k) => k,
None => return None,
};
let key = self.inner.index.get(self.pos)?;

self.pos += 1;
let value = &self.inner.values[key];
@@ -78,14 +78,10 @@ where

fn next(&mut self) -> Option<N> {
loop {
match self.0.next() {
Some(n) => {
// Filter out nodes that layout should ignore.
if n.is_text_node() || n.is_element() {
return Some(n)
}
}
None => return None,
let n = self.0.next()?;
// Filter out nodes that layout should ignore.
if n.is_text_node() || n.is_element() {
return Some(n)
}
}
}
@@ -100,13 +96,9 @@ where
type Item = N;

fn next(&mut self) -> Option<N> {
match self.0.take() {
Some(n) => {
self.0 = n.next_sibling();
Some(n)
}
None => None,
}
let n = self.0.take()?;
self.0 = n.next_sibling();
Some(n)
}
}

@@ -124,11 +116,7 @@ where

#[inline]
fn next(&mut self) -> Option<N> {
let prev = match self.previous.take() {
None => return None,
Some(n) => n,
};

let prev = self.previous.take()?;
self.previous = prev.next_in_preorder(Some(self.scope));
self.previous
}
@@ -428,10 +428,7 @@ impl<'lb> GeckoXBLBinding<'lb> {
if !binding.anon_content().is_null() {
return Some(binding);
}
binding = match binding.base_binding() {
Some(b) => b,
None => return None,
};
binding = binding.base_binding()?;
}
}

@@ -1006,20 +1003,14 @@ impl<'le> TElement for GeckoElement<'le> {

fn closest_non_native_anonymous_ancestor(&self) -> Option<Self> {
debug_assert!(self.is_native_anonymous());
let mut parent = match self.traversal_parent() {
Some(e) => e,
None => return None,
};
let mut parent = self.traversal_parent()?;

loop {
if !parent.is_native_anonymous() {
return Some(parent);
}

parent = match parent.traversal_parent() {
Some(p) => p,
None => return None,
};
parent = parent.traversal_parent()?;
}
}

@@ -1054,16 +1045,10 @@ impl<'le> TElement for GeckoElement<'le> {

fn get_smil_override(&self) -> Option<ArcBorrow<Locked<PropertyDeclarationBlock>>> {
unsafe {
let slots = match self.get_extended_slots() {
Some(s) => s,
None => return None,
};
let slots = self.get_extended_slots()?;

let base_declaration: &structs::DeclarationBlock =
match slots.mSMILOverrideStyleDeclaration.mRawPtr.as_ref() {
Some(decl) => decl,
None => return None,
};
slots.mSMILOverrideStyleDeclaration.mRawPtr.as_ref()?;

assert_eq!(base_declaration.mType, structs::StyleBackendType_Servo);
let declaration: &structs::ServoDeclarationBlock =
@@ -1074,11 +1059,7 @@ impl<'le> TElement for GeckoElement<'le> {
base_declaration as *const structs::DeclarationBlock
);

let raw: &structs::RawServoDeclarationBlock =
match declaration.mRaw.mRawPtr.as_ref() {
Some(decl) => decl,
None => return None,
};
let raw: &structs::RawServoDeclarationBlock = declaration.mRaw.mRawPtr.as_ref()?;

Some(Locked::<PropertyDeclarationBlock>::as_arc(
&*(&raw as *const &structs::RawServoDeclarationBlock)
@@ -127,10 +127,7 @@ impl<'a, E> ElementWrapper<'a, E>
if lang.is_some() {
return lang;
}
match current.parent_element() {
Some(parent) => current = parent,
None => return None,
}
current = current.parent_element()?;
}
}
}
@@ -102,20 +102,16 @@ impl RuleCache {
return None;
}

let rules = match builder_with_early_props.rules {
Some(ref rules) => rules,
None => return None,
};
let rules = builder_with_early_props.rules.as_ref()?;
let cached_values = self.map.get(rules)?;

self.map.get(rules).and_then(|cached_values| {
for &(ref conditions, ref values) in cached_values.iter() {
if conditions.matches(builder_with_early_props) {
debug!("Using cached reset style with conditions {:?}", conditions);
return Some(&**values)
}
for &(ref conditions, ref values) in cached_values.iter() {
if conditions.matches(builder_with_early_props) {
debug!("Using cached reset style with conditions {:?}", conditions);
return Some(&**values)
}
None
})
}
None
}

/// Inserts a node into the rules cache if possible.
@@ -376,11 +376,7 @@ where
originating_element_style.style(),
pseudo,
VisitedHandlingMode::AllLinksUnvisited
);
let rules = match rules {
Some(rules) => rules,
None => return None,
};
)?;

let mut visited_rules = None;
if originating_element_style.style().visited_style().is_some() {
@@ -80,10 +80,7 @@ where
fn next(&mut self) -> Option<Self::Item> {
loop {
if self.current.is_none() {
let next_origin = match self.origins.next() {
Some(o) => o,
None => return None,
};
let next_origin = self.origins.next()?;

self.current =
Some((next_origin, self.collections.borrow_for_origin(&next_origin).iter()));
@@ -238,10 +235,7 @@ where
use std::mem;

loop {
let potential_sheet = match self.iter.next() {
Some(s) => s,
None => return None,
};
let potential_sheet = self.iter.next()?;

let dirty = mem::replace(&mut potential_sheet.dirty, false);
if dirty {
@@ -89,10 +89,7 @@ impl Iterator for OriginSetIterator {

fn next(&mut self) -> Option<Origin> {
loop {
let origin = match Origin::from_index(self.cur) {
Some(origin) => origin,
None => return None,
};
let origin = Origin::from_index(self.cur)?;

self.cur += 1;

@@ -184,10 +181,7 @@ impl<'a, T> Iterator for PerOriginIter<'a, T> where T: 'a {
type Item = (&'a T, Origin);

fn next(&mut self) -> Option<Self::Item> {
let origin = match Origin::from_index(self.cur) {
Some(origin) => origin,
None => return None,
};
let origin = Origin::from_index(self.cur)?;

self.cur += if self.rev { -1 } else { 1 };

@@ -211,10 +205,7 @@ impl<'a, T> Iterator for PerOriginIterMut<'a, T> where T: 'a {
type Item = (&'a mut T, Origin);

fn next(&mut self) -> Option<Self::Item> {
let origin = match Origin::from_index(self.cur) {
Some(origin) => origin,
None => return None,
};
let origin = Origin::from_index(self.cur)?;

self.cur += 1;

@@ -196,11 +196,7 @@ impl<'a> Iterator for DocumentCascadeDataIter<'a> {
type Item = (&'a CascadeData, Origin);

fn next(&mut self) -> Option<Self::Item> {
let (_, origin) = match self.iter.next() {
Some(o) => o,
None => return None,
};

let (_, origin) = self.iter.next()?;
Some((self.cascade_data.borrow_for_origin(origin), origin))
}
}
@@ -145,10 +145,7 @@ fn to_css_identifier(mut camel_case: &str) -> String {

/// Given "FooBar", returns "Foo" and sets `camel_case` to "Bar".
fn split_camel_segment<'input>(camel_case: &mut &'input str) -> Option<&'input str> {
let index = match camel_case.chars().next() {
None => return None,
Some(ch) => ch.len_utf8(),
};
let index = camel_case.chars().next()?.len_utf8();
let end_position = camel_case[index..]
.find(char::is_uppercase)
.map_or(camel_case.len(), |pos| index + pos);
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.