diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2021-08-30 11:08:23 +0000 |
---|---|---|
committer | Martin Robinson <mrobinson@igalia.com> | 2023-10-02 14:37:19 +0000 |
commit | 653245c94e1b81afd3e34120b60ef6476099665f (patch) | |
tree | acb30f59e98af5b7b812dd5a7f6bed494c1c2138 /components/selectors/parser.rs | |
parent | 921987048c3f6b89f49047434ba0bfa1d82f9d5d (diff) | |
download | servo-653245c94e1b81afd3e34120b60ef6476099665f.tar.gz servo-653245c94e1b81afd3e34120b60ef6476099665f.zip |
style: Avoid some clone()s in selector parsing now that lifetimes are non-lexical
Differential Revision: https://phabricator.services.mozilla.com/D123622
Diffstat (limited to 'components/selectors/parser.rs')
-rw-r--r-- | components/selectors/parser.rs | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/components/selectors/parser.rs b/components/selectors/parser.rs index 9b7fd253510..295136dea3f 100644 --- a/components/selectors/parser.rs +++ b/components/selectors/parser.rs @@ -1878,9 +1878,9 @@ where }; let start = input.state(); - // FIXME: remove clone() when lifetimes are non-lexical - match input.next_including_whitespace().map(|t| t.clone()) { + match input.next_including_whitespace() { Ok(Token::Ident(value)) => { + let value = value.clone(); let after_ident = input.state(); match input.next_including_whitespace() { Ok(&Token::Delim('|')) => { @@ -1908,28 +1908,25 @@ where }, Ok(Token::Delim('*')) => { let after_star = input.state(); - // FIXME: remove clone() when lifetimes are non-lexical - match input.next_including_whitespace().map(|t| t.clone()) { - Ok(Token::Delim('|')) => { + match input.next_including_whitespace() { + Ok(&Token::Delim('|')) => { explicit_namespace(input, QNamePrefix::ExplicitAnyNamespace) }, - result => { + _ if !in_attr_selector => { input.reset(&after_star); - if in_attr_selector { - match result { - Ok(t) => Err(after_star - .source_location() - .new_custom_error(SelectorParseErrorKind::ExpectedBarInAttr(t))), - Err(e) => Err(e.into()), - } - } else { - default_namespace(None) - } + default_namespace(None) + } + result => { + let t = result?; + Err(after_star + .source_location() + .new_custom_error(SelectorParseErrorKind::ExpectedBarInAttr(t.clone()))) }, } }, Ok(Token::Delim('|')) => explicit_namespace(input, QNamePrefix::ExplicitNoNamespace), Ok(t) => { + let t = t.clone(); input.reset(&start); Ok(OptionalQName::None(t)) }, |