mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 20:01:22 -05:00
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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user