test id generation with macros
This commit is contained in:
parent
9827a899f1
commit
6d2594db2d
30
test/test_idgen.c3
Normal file
30
test/test_idgen.c3
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import std::io;
|
||||||
|
|
||||||
|
alias Id = uint;
|
||||||
|
|
||||||
|
fn void foo_ex(Id id)
|
||||||
|
{
|
||||||
|
io::printfn("id = %d", id);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macro Id @compute_id(...)
|
||||||
|
{
|
||||||
|
Id id = (Id)$$LINE.hash() ^ (Id)@str_hash($$FILE);
|
||||||
|
$for var $i = 0; $i < $vacount; $i++:
|
||||||
|
id ^= (Id)$vaconst[$i].hash();
|
||||||
|
$endfor
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
macro foo(...) => foo_ex(@compute_id($vasplat));
|
||||||
|
|
||||||
|
fn int main()
|
||||||
|
{
|
||||||
|
foo_ex(1234);
|
||||||
|
foo();
|
||||||
|
foo();
|
||||||
|
foo();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user