1
0
Fork 0
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:
tolk-vm 2025-01-15 01:41:15 +07:00
parent c720204199
commit 989629a832
No known key found for this signature in database
GPG key ID: 7905DD7FE0324B12
9 changed files with 147 additions and 7 deletions

View file

@ -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];
}