gccrs: expansion: Add get_token_slice to MacroInvocLexer class

gcc/rust/ChangeLog:

	* expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::get_token_slice):
	Add API to retrieve token slices when lexing macro expansions.
	* expand/rust-macro-invoc-lexer.h: Declare `get_token_slice`.
This commit is contained in:
Arthur Cohen
2023-01-17 16:44:23 +01:00
parent f548ddee96
commit 2d30e0b882
2 changed files with 17 additions and 0 deletions

View File

@@ -26,4 +26,18 @@ MacroInvocLexer::split_current_token (TokenId new_left __attribute__ ((unused)),
// FIXME
gcc_unreachable ();
}
std::vector<std::unique_ptr<AST::Token>>
MacroInvocLexer::get_token_slice (size_t start_idx, size_t end_idx) const
{
std::vector<std::unique_ptr<AST::Token>> slice;
rust_assert (end_idx < token_stream.size ());
for (size_t i = start_idx; i < end_idx; i++)
slice.emplace_back (token_stream[i]->clone_token ());
return slice;
}
} // namespace Rust

View File

@@ -55,6 +55,9 @@ public:
size_t get_offs () const { return offs; }
std::vector<std::unique_ptr<AST::Token>>
get_token_slice (size_t start_idx, size_t end_idx) const;
private:
size_t offs;
std::vector<std::unique_ptr<AST::Token>> token_stream;