aboutsummaryrefslogtreecommitdiffstats
path: root/components/selectors/parser.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2021-08-30 11:08:23 +0000
committerMartin Robinson <mrobinson@igalia.com>2023-10-02 14:37:19 +0000
commit653245c94e1b81afd3e34120b60ef6476099665f (patch)
treeacb30f59e98af5b7b812dd5a7f6bed494c1c2138 /components/selectors/parser.rs
parent921987048c3f6b89f49047434ba0bfa1d82f9d5d (diff)
downloadservo-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.rs29
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))
},