diff options
author | 2021-09-27 01:34:12 -0700 | |
---|---|---|
committer | 2021-09-27 01:34:12 -0700 | |
commit | 9e0511995ab516cc73bfb54d4b6a9721de2ce823 (patch) | |
tree | 24653d460492fbff8afe90cbfa0566042cef6b04 /src/js_lexer.zig | |
parent | a113603f1009e6ee8bf64ea4453e9513b72b4350 (diff) | |
parent | 62d51f7d2e636099f03abcb879475d1193c4022d (diff) | |
download | bun-9e0511995ab516cc73bfb54d4b6a9721de2ce823.tar.gz bun-9e0511995ab516cc73bfb54d4b6a9721de2ce823.tar.zst bun-9e0511995ab516cc73bfb54d4b6a9721de2ce823.zip |
Merge branch 'jarred/ast-again'bun-v0.0.25
Diffstat (limited to 'src/js_lexer.zig')
-rw-r--r-- | src/js_lexer.zig | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/js_lexer.zig b/src/js_lexer.zig index ec800cfb5..91f4fceef 100644 --- a/src/js_lexer.zig +++ b/src/js_lexer.zig @@ -76,6 +76,7 @@ pub const Lexer = struct { number: f64 = 0.0, rescan_close_brace_as_template_token: bool = false, prev_error_loc: logger.Loc = logger.Loc.Empty, + regex_flags_start: ?u16 = null, allocator: *std.mem.Allocator, /// In JavaScript, strings are stored as UTF-16, but nearly every string is ascii. /// This means, usually, we can skip UTF8 -> UTF16 conversions. @@ -108,6 +109,7 @@ pub const Lexer = struct { .all_original_comments = self.all_original_comments, .code_point = self.code_point, .identifier = self.identifier, + .regex_flags_start = self.regex_flags_start, .jsx_factory_pragma_comment = self.jsx_factory_pragma_comment, .jsx_fragment_pragma_comment = self.jsx_fragment_pragma_comment, .source_mapping_url = self.source_mapping_url, @@ -1756,13 +1758,21 @@ pub const Lexer = struct { } pub fn scanRegExp(lexer: *LexerType) !void { + lexer.regex_flags_start = null; while (true) { switch (lexer.code_point) { '/' => { try lexer.step(); + + var has_set_flags_start = false; while (isIdentifierContinue(lexer.code_point)) { switch (lexer.code_point) { 'g', 'i', 'm', 's', 'u', 'y' => { + if (!has_set_flags_start) { + lexer.regex_flags_start = @truncate(u16, lexer.end - lexer.start); + has_set_flags_start = true; + } + try lexer.step(); }, else => { |