diff options
author | 2021-05-25 23:34:14 -0700 | |
---|---|---|
committer | 2021-05-25 23:34:14 -0700 | |
commit | d04ef8c53f7054ed51f0d677b304b5da559cea14 (patch) | |
tree | ddadae8922db6cc53658b9b573a2d20c35de77eb | |
parent | f2a9dc9eea7174ecc53b225ea59ae7e77413d5c8 (diff) | |
download | bun-d04ef8c53f7054ed51f0d677b304b5da559cea14.tar.gz bun-d04ef8c53f7054ed51f0d677b304b5da559cea14.tar.zst bun-d04ef8c53f7054ed51f0d677b304b5da559cea14.zip |
cloner
-rw-r--r-- | src/js_lexer.zig | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/src/js_lexer.zig b/src/js_lexer.zig index d668c7c7b..f90e60883 100644 --- a/src/js_lexer.zig +++ b/src/js_lexer.zig @@ -69,7 +69,6 @@ pub const Lexer = struct { comments_to_preserve_before: std.ArrayList(js_ast.G.Comment), all_original_comments: ?[]js_ast.G.Comment = null, code_point: CodePoint = -1, - identifier: []const u8 = "", jsx_factory_pragma_comment: ?js_ast.Span = null, jsx_fragment_pragma_comment: ?js_ast.Span = null, @@ -78,7 +77,6 @@ pub const Lexer = struct { rescan_close_brace_as_template_token: bool = false, prev_error_loc: logger.Loc = logger.Loc.Empty, 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. string_literal_buffer: std.ArrayList(u16), @@ -86,6 +84,43 @@ pub const Lexer = struct { string_literal: JavascriptString, string_literal_is_ascii: bool = false, + pub fn clone(self: *const LexerType) LexerType { + return LexerType{ + .log = self.log, + .json_options = self.json_options, + .for_global_name = self.for_global_name, + .source = self.source, + .current = self.current, + .start = self.start, + .end = self.end, + .did_panic = self.did_panic, + .approximate_newline_count = self.approximate_newline_count, + .legacy_octal_loc = self.legacy_octal_loc, + .previous_backslash_quote_in_jsx = self.previous_backslash_quote_in_jsx, + .token = self.token, + .has_newline_before = self.has_newline_before, + .has_pure_comment_before = self.has_pure_comment_before, + .preserve_all_comments_before = self.preserve_all_comments_before, + .is_legacy_octal_literal = self.is_legacy_octal_literal, + .is_log_disabled = self.is_log_disabled, + .comments_to_preserve_before = self.comments_to_preserve_before, + .all_original_comments = self.all_original_comments, + .code_point = self.code_point, + .identifier = self.identifier, + .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, + .number = self.number, + .rescan_close_brace_as_template_token = self.rescan_close_brace_as_template_token, + .prev_error_loc = self.prev_error_loc, + .allocator = self.allocator, + .string_literal_buffer = self.string_literal_buffer, + .string_literal_slice = self.string_literal_slice, + .string_literal = self.string_literal, + .string_literal_is_ascii = self.string_literal_is_ascii, + }; + } + pub fn loc(self: *LexerType) logger.Loc { return logger.usize2Loc(self.start); } |