Skip to content

Commit

Permalink
refactor(css/parser): Union input types (#6385)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Nov 10, 2022
1 parent 68c8c33 commit 434a765
Show file tree
Hide file tree
Showing 5 changed files with 175 additions and 218 deletions.
2 changes: 1 addition & 1 deletion crates/swc_css_parser/src/lexer/mod.rs
Expand Up @@ -140,7 +140,7 @@ where
{
type State = LexerState;

fn start_pos(&mut self) -> swc_common::BytePos {
fn start_pos(&mut self) -> BytePos {
self.input.cur_pos()
}

Expand Down
38 changes: 10 additions & 28 deletions crates/swc_css_parser/src/lib.rs
Expand Up @@ -5,13 +5,13 @@
#![allow(clippy::nonminimal_bool)]
#![allow(clippy::wrong_self_convention)]

use swc_common::{input::StringInput, BytePos, SourceFile};
use swc_common::{input::StringInput, SourceFile};

use crate::{
error::Error,
lexer::Lexer,
parser::{
input::{Tokens, TokensInput},
input::{Input, InputType},
PResult, Parser, ParserConfig,
},
};
Expand All @@ -37,28 +37,6 @@ where
}
}

/// Parse a given string as `T`.
///
/// If there are syntax errors but if it was recoverable, it will be appended
/// to `errors`.
pub fn parse_str<'a, T>(
src: &'a str,
start_pos: BytePos,
end_pos: BytePos,
config: ParserConfig,
errors: &mut Vec<Error>,
) -> PResult<T>
where
Parser<Lexer<StringInput<'a>>>: Parse<T>,
{
let lexer = Lexer::new(StringInput::new(src, start_pos, end_pos), config);
let mut parser = Parser::new(lexer, config);

let res = parser.parse();
errors.extend(parser.take_errors());
res
}

/// Parse a given file as `T`.
///
/// If there are syntax errors but if it was recoverable, it will be appended
Expand All @@ -75,26 +53,30 @@ where
let mut parser = Parser::new(lexer, config);

let res = parser.parse();

errors.extend(parser.take_errors());

res
}

/// Parse a given file as `T`.
///
/// If there are syntax errors but if it was recoverable, it will be appended
/// to `errors`.
pub fn parse_tokens<'a, T>(
tokens: &'a Tokens,
pub fn parse_input<'a, T>(
input: InputType<'a>,
config: ParserConfig,
errors: &mut Vec<Error>,
) -> PResult<T>
where
Parser<TokensInput<'a>>: Parse<T>,
Parser<Input<'a>>: Parse<T>,
{
let lexer = TokensInput::new(tokens);
let lexer = Input::new(input);
let mut parser = Parser::new(lexer, config);

let res = parser.parse();

errors.extend(parser.take_errors());

res
}

1 comment on commit 434a765

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: 434a765 Previous: bea6cce Ratio
es/full/bugs-1 346319 ns/iter (± 28732) 336568 ns/iter (± 23232) 1.03
es/full/minify/libraries/antd 1880489280 ns/iter (± 42210239) 1856412549 ns/iter (± 51559288) 1.01
es/full/minify/libraries/d3 405404030 ns/iter (± 19336039) 422786654 ns/iter (± 20878780) 0.96
es/full/minify/libraries/echarts 1573215373 ns/iter (± 33719678) 1538472001 ns/iter (± 15772516) 1.02
es/full/minify/libraries/jquery 103004016 ns/iter (± 2740469) 101917859 ns/iter (± 5080502) 1.01
es/full/minify/libraries/lodash 122969588 ns/iter (± 8193156) 116503093 ns/iter (± 4825111) 1.06
es/full/minify/libraries/moment 65260973 ns/iter (± 5471231) 59238515 ns/iter (± 2275152) 1.10
es/full/minify/libraries/react 20246720 ns/iter (± 581772) 20082978 ns/iter (± 690125) 1.01
es/full/minify/libraries/terser 329597953 ns/iter (± 15603044) 292860931 ns/iter (± 8574147) 1.13
es/full/minify/libraries/three 585089007 ns/iter (± 20362181) 545251989 ns/iter (± 12360454) 1.07
es/full/minify/libraries/typescript 3685663654 ns/iter (± 200958289) 3286426060 ns/iter (± 23615918) 1.12
es/full/minify/libraries/victory 904368012 ns/iter (± 33479132) 805671494 ns/iter (± 9331432) 1.12
es/full/minify/libraries/vue 181828186 ns/iter (± 5515986) 148865981 ns/iter (± 5283395) 1.22
es/full/codegen/es3 35453 ns/iter (± 2627) 33744 ns/iter (± 706) 1.05
es/full/codegen/es5 34719 ns/iter (± 1675) 33775 ns/iter (± 751) 1.03
es/full/codegen/es2015 34577 ns/iter (± 1760) 33768 ns/iter (± 920) 1.02
es/full/codegen/es2016 35014 ns/iter (± 4533) 33864 ns/iter (± 1864) 1.03
es/full/codegen/es2017 34383 ns/iter (± 2954) 33831 ns/iter (± 694) 1.02
es/full/codegen/es2018 34802 ns/iter (± 2297) 33882 ns/iter (± 436) 1.03
es/full/codegen/es2019 35208 ns/iter (± 1398) 33823 ns/iter (± 479) 1.04
es/full/codegen/es2020 35462 ns/iter (± 1920) 33900 ns/iter (± 1112) 1.05
es/full/all/es3 229464856 ns/iter (± 22314812) 188865288 ns/iter (± 8759261) 1.21
es/full/all/es5 204005279 ns/iter (± 19619762) 180127504 ns/iter (± 8311815) 1.13
es/full/all/es2015 163757023 ns/iter (± 16543214) 142353693 ns/iter (± 4669647) 1.15
es/full/all/es2016 153562851 ns/iter (± 17696688) 140182180 ns/iter (± 3836377) 1.10
es/full/all/es2017 167169040 ns/iter (± 21627712) 140205383 ns/iter (± 4765211) 1.19
es/full/all/es2018 168211359 ns/iter (± 15728945) 139264525 ns/iter (± 4506820) 1.21
es/full/all/es2019 164589946 ns/iter (± 21174490) 138597011 ns/iter (± 3696290) 1.19
es/full/all/es2020 152813785 ns/iter (± 13735371) 133967552 ns/iter (± 5845734) 1.14
es/full/parser 733987 ns/iter (± 54448) 705235 ns/iter (± 24304) 1.04
es/full/base/fixer 27556 ns/iter (± 1602) 26696 ns/iter (± 490) 1.03
es/full/base/resolver_and_hygiene 95873 ns/iter (± 4661) 92049 ns/iter (± 4196) 1.04
serialization of ast node 235 ns/iter (± 7) 214 ns/iter (± 8) 1.10
serialization of serde 239 ns/iter (± 21) 231 ns/iter (± 5) 1.03

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.