Skip to content

Commit af045ce

Browse files
AtkinsSJawesomekling
authored andcommitted
LibWeb: Use references to CSS tokens instead of copying by value
A couple of places required a logic change to make this work, but mostly it's a simple case of adding &.
1 parent 7439fbd commit af045ce

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ RefPtr<Selector> Parser::parse_single_selector(TokenStream<T>& tokens, bool is_r
497497

498498
tokens.skip_whitespace();
499499

500-
auto current_value = tokens.peek_token();
500+
auto& current_value = tokens.peek_token();
501501
if (current_value.is(Token::Type::Delim)) {
502502
auto delim = ((Token)current_value).delim();
503503
if (delim == ">") {
@@ -512,7 +512,7 @@ RefPtr<Selector> Parser::parse_single_selector(TokenStream<T>& tokens, bool is_r
512512
} else if (delim == "|") {
513513
tokens.next_token();
514514

515-
auto next = tokens.peek_token();
515+
auto& next = tokens.peek_token();
516516
if (next.is(Token::Type::EndOfFile))
517517
return {};
518518

@@ -528,7 +528,7 @@ RefPtr<Selector> Parser::parse_single_selector(TokenStream<T>& tokens, bool is_r
528528
Vector<Selector::SimpleSelector> simple_selectors;
529529

530530
for (;;) {
531-
auto current_value = tokens.peek_token();
531+
auto& current_value = tokens.peek_token();
532532
if (current_value.is(Token::Type::EndOfFile) || current_value.is(Token::Type::Whitespace))
533533
break;
534534

@@ -546,7 +546,7 @@ RefPtr<Selector> Parser::parse_single_selector(TokenStream<T>& tokens, bool is_r
546546
};
547547

548548
for (;;) {
549-
auto current_value = tokens.peek_token();
549+
auto& current_value = tokens.peek_token();
550550
if (current_value.is(Token::Type::EndOfFile))
551551
break;
552552

@@ -577,7 +577,7 @@ NonnullRefPtrVector<StyleRule> Parser::consume_a_list_of_rules(TokenStream<T>& t
577577
NonnullRefPtrVector<StyleRule> rules;
578578

579579
for (;;) {
580-
auto token = tokens.next_token();
580+
auto& token = tokens.next_token();
581581

582582
if (token.is(Token::Type::Whitespace)) {
583583
continue;
@@ -627,14 +627,14 @@ NonnullRefPtr<StyleRule> Parser::consume_an_at_rule(TokenStream<T>& tokens)
627627
{
628628
dbgln_if(CSS_PARSER_TRACE, "Parser::consume_an_at_rule");
629629

630-
auto name_ident = tokens.next_token();
630+
auto& name_ident = tokens.next_token();
631631
VERIFY(name_ident.is(Token::Type::AtKeyword));
632632

633633
NonnullRefPtr<StyleRule> rule = create<StyleRule>(StyleRule::Type::At);
634634
rule->m_name = ((Token)name_ident).at_keyword();
635635

636636
for (;;) {
637-
auto token = tokens.next_token();
637+
auto& token = tokens.next_token();
638638
if (token.is(Token::Type::Semicolon)) {
639639
return rule;
640640
}
@@ -670,7 +670,7 @@ RefPtr<StyleRule> Parser::consume_a_qualified_rule(TokenStream<T>& tokens)
670670
NonnullRefPtr<StyleRule> rule = create<StyleRule>(StyleRule::Type::Qualified);
671671

672672
for (;;) {
673-
auto token = tokens.next_token();
673+
auto& token = tokens.next_token();
674674

675675
if (token.is(Token::Type::EndOfFile)) {
676676
log_parse_error();
@@ -705,7 +705,7 @@ StyleComponentValueRule Parser::consume_a_component_value(TokenStream<T>& tokens
705705
{
706706
dbgln_if(CSS_PARSER_TRACE, "Parser::consume_a_component_value");
707707

708-
auto token = tokens.next_token();
708+
auto& token = tokens.next_token();
709709

710710
if (token.is(Token::Type::OpenCurly) || token.is(Token::Type::OpenSquare) || token.is(Token::Type::OpenParen))
711711
return StyleComponentValueRule(consume_a_simple_block(tokens));
@@ -737,7 +737,7 @@ NonnullRefPtr<StyleBlockRule> Parser::consume_a_simple_block(TokenStream<T>& tok
737737
block->m_token = tokens.current_token();
738738

739739
for (;;) {
740-
auto token = tokens.next_token();
740+
auto& token = tokens.next_token();
741741

742742
if (token.is(ending_token)) {
743743
return block;
@@ -769,7 +769,7 @@ NonnullRefPtr<StyleFunctionRule> Parser::consume_a_function(TokenStream<T>& toke
769769
NonnullRefPtr<StyleFunctionRule> function = create<StyleFunctionRule>(((Token)name_ident).m_value.to_string());
770770

771771
for (;;) {
772-
auto token = tokens.next_token();
772+
auto& token = tokens.next_token();
773773
if (token.is(Token::Type::CloseParen)) {
774774
return function;
775775
}
@@ -797,16 +797,16 @@ Optional<StyleDeclarationRule> Parser::consume_a_declaration(TokenStream<T>& tok
797797
{
798798
dbgln_if(CSS_PARSER_TRACE, "Parser::consume_a_declaration");
799799

800-
auto token = tokens.next_token();
800+
auto& token = tokens.next_token();
801801

802802
StyleDeclarationRule declaration;
803803
VERIFY(token.is(Token::Type::Ident));
804804
declaration.m_name = ((Token)token).ident();
805805

806806
tokens.skip_whitespace();
807807

808-
auto colon = tokens.next_token();
809-
if (!colon.is(Token::Type::Colon)) {
808+
auto& maybe_colon = tokens.next_token();
809+
if (!maybe_colon.is(Token::Type::Colon)) {
810810
log_parse_error();
811811
return {};
812812
}
@@ -862,7 +862,7 @@ Vector<DeclarationOrAtRule> Parser::consume_a_list_of_declarations(TokenStream<T
862862
Vector<DeclarationOrAtRule> list;
863863

864864
for (;;) {
865-
auto token = tokens.next_token();
865+
auto& token = tokens.next_token();
866866
if (token.is(Token::Type::Whitespace) || token.is(Token::Type::Semicolon)) {
867867
continue;
868868
}
@@ -882,7 +882,7 @@ Vector<DeclarationOrAtRule> Parser::consume_a_list_of_declarations(TokenStream<T
882882
temp.append(token);
883883

884884
for (;;) {
885-
auto peek = tokens.peek_token();
885+
auto& peek = tokens.peek_token();
886886
if (peek.is(Token::Type::Semicolon) || peek.is(Token::Type::EndOfFile)) {
887887
break;
888888
}
@@ -899,11 +899,13 @@ Vector<DeclarationOrAtRule> Parser::consume_a_list_of_declarations(TokenStream<T
899899

900900
log_parse_error();
901901
tokens.reconsume_current_input_token();
902-
auto peek = tokens.peek_token();
903-
while (!(peek.is(Token::Type::Semicolon) || peek.is(Token::Type::EndOfFile))) {
902+
903+
for (;;) {
904+
auto& peek = tokens.peek_token();
905+
if (peek.is(Token::Type::Semicolon) || peek.is(Token::Type::EndOfFile))
906+
break;
904907
dbgln("Discarding token: '{}'", peek.to_debug_string());
905908
(void)consume_a_component_value(tokens);
906-
peek = tokens.peek_token();
907909
}
908910
}
909911

@@ -924,7 +926,7 @@ RefPtr<CSSRule> Parser::parse_as_rule(TokenStream<T>& tokens)
924926

925927
tokens.skip_whitespace();
926928

927-
auto token = tokens.peek_token();
929+
auto& token = tokens.peek_token();
928930

929931
if (token.is(Token::Type::EndOfFile)) {
930932
return {};
@@ -941,7 +943,7 @@ RefPtr<CSSRule> Parser::parse_as_rule(TokenStream<T>& tokens)
941943

942944
tokens.skip_whitespace();
943945

944-
auto maybe_eof = tokens.peek_token();
946+
auto& maybe_eof = tokens.peek_token();
945947
if (maybe_eof.is(Token::Type::EndOfFile)) {
946948
return rule;
947949
}
@@ -983,7 +985,7 @@ Optional<StyleProperty> Parser::parse_as_declaration(TokenStream<T>& tokens)
983985

984986
tokens.skip_whitespace();
985987

986-
auto token = tokens.peek_token();
988+
auto& token = tokens.peek_token();
987989

988990
if (!token.is(Token::Type::Ident)) {
989991
return {};
@@ -1045,7 +1047,7 @@ Optional<StyleComponentValueRule> Parser::parse_as_component_value(TokenStream<T
10451047

10461048
tokens.skip_whitespace();
10471049

1048-
auto token = tokens.peek_token();
1050+
auto& token = tokens.peek_token();
10491051

10501052
if (token.is(Token::Type::EndOfFile)) {
10511053
return {};
@@ -1055,7 +1057,7 @@ Optional<StyleComponentValueRule> Parser::parse_as_component_value(TokenStream<T
10551057

10561058
tokens.skip_whitespace();
10571059

1058-
auto maybe_eof = tokens.peek_token();
1060+
auto& maybe_eof = tokens.peek_token();
10591061
if (maybe_eof.is(Token::Type::EndOfFile)) {
10601062
return value;
10611063
}
@@ -1100,7 +1102,7 @@ Vector<Vector<StyleComponentValueRule>> Parser::parse_as_comma_separated_list_of
11001102
lists.append({});
11011103

11021104
for (;;) {
1103-
auto next = tokens.next_token();
1105+
auto& next = tokens.next_token();
11041106

11051107
if (next.is(Token::Type::Comma)) {
11061108
lists.append({});

0 commit comments

Comments
 (0)