From bbddfeef4bf5dcebd50828806d55a60224ece6b9 Mon Sep 17 00:00:00 2001 From: davidot Date: Wed, 1 Sep 2021 18:35:33 +0200 Subject: LibJS: Clean up token constructor and use method instead for identifiers Having two large constructor with just one parameter difference in the middle seems quite dangerous so just do it with a method. --- Userland/Libraries/LibJS/Lexer.cpp | 34 ++++++++++++---------------------- Userland/Libraries/LibJS/Token.h | 18 +++++------------- 2 files changed, 17 insertions(+), 35 deletions(-) (limited to 'Userland') diff --git a/Userland/Libraries/LibJS/Lexer.cpp b/Userland/Libraries/LibJS/Lexer.cpp index 7f159123d5..340eca7ec5 100644 --- a/Userland/Libraries/LibJS/Lexer.cpp +++ b/Userland/Libraries/LibJS/Lexer.cpp @@ -768,28 +768,18 @@ Token Lexer::next() } } - if (identifier.has_value()) { - m_current_token = Token( - token_type, - token_message, - m_source.substring_view(trivia_start - 1, value_start - trivia_start), - m_source.substring_view(value_start - 1, m_position - value_start), - identifier.release_value(), - m_filename, - value_start_line_number, - value_start_column_number, - m_position); - } else { - m_current_token = Token( - token_type, - token_message, - m_source.substring_view(trivia_start - 1, value_start - trivia_start), - m_source.substring_view(value_start - 1, m_position - value_start), - m_filename, - value_start_line_number, - value_start_column_number, - m_position); - } + m_current_token = Token( + token_type, + token_message, + m_source.substring_view(trivia_start - 1, value_start - trivia_start), + m_source.substring_view(value_start - 1, m_position - value_start), + m_filename, + value_start_line_number, + value_start_column_number, + m_position); + + if (identifier.has_value()) + m_current_token.set_identifier_value(identifier.release_value()); if constexpr (LEXER_DEBUG) { dbgln("------------------------------"); diff --git a/Userland/Libraries/LibJS/Token.h b/Userland/Libraries/LibJS/Token.h index e5a9e92f8f..fe69804e29 100644 --- a/Userland/Libraries/LibJS/Token.h +++ b/Userland/Libraries/LibJS/Token.h @@ -193,19 +193,6 @@ public: { } - Token(TokenType type, String message, StringView trivia, StringView original_value, FlyString value, StringView filename, size_t line_number, size_t line_column, size_t offset) - : m_type(type) - , m_message(message) - , m_trivia(trivia) - , m_original_value(original_value) - , m_value(move(value)) - , m_filename(filename) - , m_line_number(line_number) - , m_line_column(line_column) - , m_offset(offset) - { - } - TokenType type() const { return m_type; } TokenCategory category() const; static TokenCategory category(TokenType); @@ -239,6 +226,11 @@ public: String string_value(StringValueStatus& status) const; String raw_template_value() const; + void set_identifier_value(FlyString value) + { + m_value = move(value); + } + bool is_identifier_name() const; bool trivia_contains_line_terminator() const; -- cgit v1.2.3