mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
[Tolk] Compiler built-in __expect_type()
for testing purposes
Currently, tolk-tester can test various "output" of the compiler: pass input and check output, validate fif codegen, etc. But it can not test compiler internals and AST representation. I've added an ability to have special functions to check/expose internal compiler state. The first (and the only now) is: > __expect_type(some_expr, "<type>"); Such a call has special treatment in a compilation process. Compilation fails if this expression doesn't have requested type. It's intended to be used in tests only. Not present in stdlib.
This commit is contained in:
parent
c720204199
commit
989629a832
9 changed files with 147 additions and 7 deletions
|
@ -555,6 +555,15 @@ Lexer::Lexer(const SrcFile* file)
|
|||
next();
|
||||
}
|
||||
|
||||
Lexer::Lexer(std::string_view text)
|
||||
: file(nullptr)
|
||||
, p_start(text.data())
|
||||
, p_end(p_start + text.size())
|
||||
, p_next(p_start)
|
||||
, location() {
|
||||
next();
|
||||
}
|
||||
|
||||
void Lexer::next() {
|
||||
while (cur_token_idx == last_token_idx && !is_eof()) {
|
||||
update_location();
|
||||
|
@ -563,7 +572,7 @@ void Lexer::next() {
|
|||
}
|
||||
}
|
||||
if (is_eof()) {
|
||||
add_token(tok_eof, file->text);
|
||||
add_token(tok_eof, "");
|
||||
}
|
||||
cur_token = tokens_circularbuf[++cur_token_idx & 7];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue