diff --git a/Userland/Libraries/LibCpp/Preprocessor.cpp b/Userland/Libraries/LibCpp/Preprocessor.cpp index 5159f5ea6e..dfb0d58691 100644 --- a/Userland/Libraries/LibCpp/Preprocessor.cpp +++ b/Userland/Libraries/LibCpp/Preprocessor.cpp @@ -24,11 +24,14 @@ Vector Preprocessor::process_and_lex() lexer.set_ignore_whitespace(true); auto tokens = lexer.lex(); + m_unprocessed_tokens = tokens; + for (size_t token_index = 0; token_index < tokens.size(); ++token_index) { auto& token = tokens[token_index]; m_current_line = token.start().line; if (token.type() == Token::Type::PreprocessorStatement) { handle_preprocessor_statement(token.text()); + m_processed_tokens.append(tokens[token_index]); continue; } diff --git a/Userland/Libraries/LibCpp/Preprocessor.h b/Userland/Libraries/LibCpp/Preprocessor.h index f834ba918b..92e5ce5dc4 100644 --- a/Userland/Libraries/LibCpp/Preprocessor.h +++ b/Userland/Libraries/LibCpp/Preprocessor.h @@ -49,6 +49,8 @@ public: Function definitions_in_header_callback { nullptr }; + Vector const& unprocessed_tokens() const { return m_unprocessed_tokens; } + private: void handle_preprocessor_statement(StringView); void handle_include_statement(StringView); @@ -72,6 +74,7 @@ private: String m_filename; String m_program; + Vector m_unprocessed_tokens; Vector m_processed_tokens; Definitions m_definitions; Vector m_substitutions;