Skip to content

Commit

Permalink
Use MacroInvocLexerBase in MacroInvocLexer
Browse files Browse the repository at this point in the history
gcc/rust/ChangeLog:

	* expand/rust-macro-invoc-lexer.cc
	(MacroInvocLexer::skip_token): Remove.
	* expand/rust-macro-invoc-lexer.h
	(class MacroInvocLexer): Extend MacroInvocLexerBase.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
  • Loading branch information
powerboat9 authored and CohenArthur committed Aug 1, 2023
1 parent dba8bc5 commit cc167a9
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 28 deletions.
7 changes: 0 additions & 7 deletions gcc/rust/expand/rust-macro-invoc-lexer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,6 @@ MacroInvocLexer::peek_token (int n)
return token_stream.at (offs + n)->get_tok_ptr ();
}

// Advances current token to n + 1 tokens ahead of current position.
void
MacroInvocLexer::skip_token (int n)
{
offs += (n + 1);
}

void
MacroInvocLexer::split_current_token (TokenId new_left, TokenId new_right)
{
Expand Down
23 changes: 2 additions & 21 deletions gcc/rust/expand/rust-macro-invoc-lexer.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ template <class T> class MacroInvocLexerBase
std::vector<T> token_stream;
};

class MacroInvocLexer
class MacroInvocLexer : public MacroInvocLexerBase<std::unique_ptr<AST::Token>>
{
public:
MacroInvocLexer (std::vector<std::unique_ptr<AST::Token>> stream)
: offs (0), token_stream (std::move (stream))
: MacroInvocLexerBase (std::move (stream))
{}

// Returns token n tokens ahead of current position.
Expand All @@ -62,32 +62,13 @@ class MacroInvocLexer
// Peeks the current token.
const_TokenPtr peek_token () { return peek_token (0); }

// Advances current token to n + 1 tokens ahead of current position.
void skip_token (int n);

// Skips the current token.
void skip_token () { skip_token (0); }

// Splits the current token into two. Intended for use with nested generics
// closes (i.e. T<U<X>> where >> is wrongly lexed as one token). Note that
// this will only work with "simple" tokens like punctuation.
void split_current_token (TokenId new_left, TokenId new_right);

std::string get_filename () const
{
// FIXME
rust_unreachable ();
return "FIXME";
}

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;
};
} // namespace Rust

Expand Down

0 comments on commit cc167a9

Please sign in to comment.